mirror of https://github.com/ghostfolio/ghostfolio
Thomas Kaul
3 years ago
committed by
GitHub
14 changed files with 356 additions and 95 deletions
@ -0,0 +1,19 @@ |
|||
import { NgModule } from '@angular/core'; |
|||
import { RouterModule, Routes } from '@angular/router'; |
|||
import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; |
|||
|
|||
import { FirstMonthsInOpenSourcePageComponent } from './first-months-in-open-source-page.component'; |
|||
|
|||
const routes: Routes = [ |
|||
{ |
|||
path: '', |
|||
component: FirstMonthsInOpenSourcePageComponent, |
|||
canActivate: [AuthGuard] |
|||
} |
|||
]; |
|||
|
|||
@NgModule({ |
|||
imports: [RouterModule.forChild(routes)], |
|||
exports: [RouterModule] |
|||
}) |
|||
export class FirstMonthsInOpenSourceRoutingModule {} |
@ -0,0 +1,9 @@ |
|||
import { Component } from '@angular/core'; |
|||
|
|||
@Component({ |
|||
host: { class: 'mb-5' }, |
|||
selector: 'gf-first-months-in-open-source-page', |
|||
styleUrls: ['./first-months-in-open-source-page.scss'], |
|||
templateUrl: './first-months-in-open-source-page.html' |
|||
}) |
|||
export class FirstMonthsInOpenSourcePageComponent {} |
@ -0,0 +1,185 @@ |
|||
<div class="blog container"> |
|||
<div class="row"> |
|||
<div class="col-md-8 offset-md-2"> |
|||
<article> |
|||
<div class="mb-4 text-center"> |
|||
<h1 class="mb-1" i18n> |
|||
👻 Ghostfolio – |
|||
<span class="text-nowrap">First months in Open Source</span> |
|||
</h1> |
|||
<div class="text-muted"><small>05.01.2022</small></div> |
|||
</div> |
|||
<section class="mb-4"> |
|||
<p> |
|||
In this article I would like to recap the first months running the |
|||
open source project <a href="https://ghostfol.io">Ghostfolio</a>, a |
|||
web-based personal finance management software. |
|||
</p> |
|||
</section> |
|||
<section class="mb-4"> |
|||
<h2 class="h4">From 1* to 100 stars on GitHub</h2> |
|||
<p> |
|||
When I decided to |
|||
<a [routerLink]="['/en', 'blog', '2021', '07', 'hello-ghostfolio']" |
|||
>publish</a |
|||
> |
|||
the project as |
|||
<a href="https://github.com/ghostfolio/ghostfolio" |
|||
>open source software</a |
|||
> |
|||
(OSS), I did not know what exactly to expect. In the worst case, |
|||
nobody would care. And in the best case, the repository would be |
|||
overrun with contributions. The truth is probably somewhere in |
|||
between. |
|||
</p> |
|||
<p> |
|||
In the beginning, it felt quite weird to develop in public where |
|||
anyone can observe the progress. Stupid mistakes remain visible |
|||
forever. But this feeling, fortunately, quickly settled. I believe |
|||
the benefits like all the learning clearly outweigh the drawbacks |
|||
when you just do it. |
|||
</p> |
|||
<p> |
|||
At the end of 2021, Ghostfolio reached an important milestone: |
|||
<a href="https://twitter.com/ghostfolio_/status/1470075774640218121" |
|||
>100 stars</a |
|||
> |
|||
on GitHub. This is really exciting with almost no marketing. I am a |
|||
technical founder, so I prefer writing code over anything else. But |
|||
there is so much more to make this project happen: writing |
|||
documentation, maintaining bug reports and feature requests, |
|||
supporting users and managing the community, keeping the SaaS |
|||
running, etc. |
|||
</p> |
|||
<p> |
|||
Reaching 100 stars will not only attract very early adopters, but |
|||
also the early adopters. At the same time, the demands and |
|||
expectations are also increasing. |
|||
</p> |
|||
</section> |
|||
<section class="mb-4"> |
|||
<h2 class="h4">What is new?</h2> |
|||
<p> |
|||
During the last months, Ghostfolio has transformed from a one man |
|||
project into a prospering wealth management application with 9 |
|||
contributors and counting. User feedback has directly shaped the |
|||
direction of the product development. |
|||
</p> |
|||
<p>These are some selected key features:</p> |
|||
<ul> |
|||
<li> |
|||
Simplified self-hosting with an |
|||
<a href="https://hub.docker.com/r/ghostfolio/ghostfolio" |
|||
>official Ghostfolio docker image</a |
|||
> |
|||
on Docker Hub |
|||
</li> |
|||
<li>Improved import for activities (transactions and dividend)</li> |
|||
<li>Enriched market data for ETFs (region and industries)</li> |
|||
</ul> |
|||
</section> |
|||
<section class="mb-4"> |
|||
<h2 class="h4">What is coming?</h2> |
|||
<p>Here is a brief overview of what I am planning in 2022.</p> |
|||
<p> |
|||
The goal remains to offer a simple and solid software to manage |
|||
personal finances. Thus, the main focus is on the core |
|||
functionality. |
|||
</p> |
|||
<p> |
|||
My personal goal is to reach break-even with the Saas offering (<a |
|||
[routerLink]="['/pricing']" |
|||
>Ghostfolio Premium</a |
|||
>) and regularly report about the progress and my learnings on this |
|||
exciting journey. |
|||
</p> |
|||
<p> |
|||
I have already started to build a |
|||
<a |
|||
href="https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg" |
|||
>community</a |
|||
> |
|||
of users. In the future, I would like to involve more contributors |
|||
to further extend the functionality of Ghostfolio (e.g. with new |
|||
reports). Get in touch with me by email at |
|||
<a href="mailto:hi@ghostfol.io">hi@ghostfol.io</a> or on Twitter |
|||
<a href="https://twitter.com/ghostfolio_">@ghostfolio_</a> if you |
|||
are interested, I’m happy to discuss ideas. |
|||
</p> |
|||
<p> |
|||
I would like to say thank you for all your feedback and support |
|||
during the last months. |
|||
</p> |
|||
<p> |
|||
Have a great start into the new year and happy investing<br /> |
|||
Thomas from Ghostfolio |
|||
</p> |
|||
</section> |
|||
<section class="mb-4"> |
|||
<p>* Pro Tip: add the first star to your own open source project</p> |
|||
</section> |
|||
<section class="mb-4"> |
|||
<ul class="list-inline"> |
|||
<li class="list-inline-item"> |
|||
<span class="badge badge-light">BuildInPublic</span> |
|||
</li> |
|||
<li class="list-inline-item"> |
|||
<span class="badge badge-light">Community</span> |
|||
</li> |
|||
<li class="list-inline-item"> |
|||
<span class="badge badge-light">Cryptocurrency</span> |
|||
</li> |
|||
<li class="list-inline-item"> |
|||
<span class="badge badge-light">Docker</span> |
|||
</li> |
|||
<li class="list-inline-item"> |
|||
<span class="badge badge-light">ETF</span> |
|||
</li> |
|||
<li class="list-inline-item"> |
|||
<span class="badge badge-light">Fintech</span> |
|||
</li> |
|||
<li class="list-inline-item"> |
|||
<span class="badge badge-light">Ghostfolio</span> |
|||
</li> |
|||
<li class="list-inline-item"> |
|||
<span class="badge badge-light">Image</span> |
|||
</li> |
|||
<li class="list-inline-item"> |
|||
<span class="badge badge-light">Investment</span> |
|||
</li> |
|||
<li class="list-inline-item"> |
|||
<span class="badge badge-light">Open Source</span> |
|||
</li> |
|||
<li class="list-inline-item"> |
|||
<span class="badge badge-light">OSS</span> |
|||
</li> |
|||
<li class="list-inline-item"> |
|||
<span class="badge badge-light">Portfolio</span> |
|||
</li> |
|||
<li class="list-inline-item"> |
|||
<span class="badge badge-light">Progress</span> |
|||
</li> |
|||
<li class="list-inline-item"> |
|||
<span class="badge badge-light">SaaS</span> |
|||
</li> |
|||
<li class="list-inline-item"> |
|||
<span class="badge badge-light">Software</span> |
|||
</li> |
|||
<li class="list-inline-item"> |
|||
<span class="badge badge-light">Stock</span> |
|||
</li> |
|||
<li class="list-inline-item"> |
|||
<span class="badge badge-light">Strategy</span> |
|||
</li> |
|||
<li class="list-inline-item"> |
|||
<span class="badge badge-light">Wealth</span> |
|||
</li> |
|||
<li class="list-inline-item"> |
|||
<span class="badge badge-light">Wealth Management</span> |
|||
</li> |
|||
</ul> |
|||
</section> |
|||
</article> |
|||
</div> |
|||
</div> |
|||
</div> |
@ -0,0 +1,13 @@ |
|||
import { CommonModule } from '@angular/common'; |
|||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; |
|||
import { RouterModule } from '@angular/router'; |
|||
|
|||
import { FirstMonthsInOpenSourceRoutingModule } from './first-months-in-open-source-page-routing.module'; |
|||
import { FirstMonthsInOpenSourcePageComponent } from './first-months-in-open-source-page.component'; |
|||
|
|||
@NgModule({ |
|||
declarations: [FirstMonthsInOpenSourcePageComponent], |
|||
imports: [CommonModule, FirstMonthsInOpenSourceRoutingModule, RouterModule], |
|||
schemas: [CUSTOM_ELEMENTS_SCHEMA] |
|||
}) |
|||
export class FirstMonthsInOpenSourcePageModule {} |
@ -0,0 +1,3 @@ |
|||
:host { |
|||
display: block; |
|||
} |
Loading…
Reference in new issue