Skip to content

Commit

Permalink
init: Let's GO ! 🚀
Browse files Browse the repository at this point in the history
  • Loading branch information
lindenquan committed Oct 13, 2024
0 parents commit 155bc15
Show file tree
Hide file tree
Showing 29 changed files with 3,363 additions and 0 deletions.
Binary file added .github/assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions .github/assets/logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
50 changes: 50 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: CI

on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
build:
runs-on: ubuntu-latest

strategy:
matrix:
node-version: [18.17.x, 20.x, 22.x]

steps:
- name: Checkout repository
uses: actions/checkout@v4

- uses: pnpm/action-setup@v4
with:
version: 9.12.1

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "pnpm"

- name: Install dependencies
run: pnpm install

- name: Run code check
run: pnpm lint.check

- name: Run tests
run: pnpm test

- name: Upload results to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
file: packages/app/coverage/coverage-final.json

- name: Build the application
run: pnpm build
20 changes: 20 additions & 0 deletions .github/workflows/release-please.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
on:
push:
branches:
- main

permissions:
contents: write
pull-requests: write

name: release-please

jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Release Please
uses: googleapis/release-please-action@v4
with:
config-file: release-please-config.json
manifest-file: .release-please-manifest.json
46 changes: 46 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Build
/dist
/lib
/lib-types
/server
/tmp
**/coverage/
.turbo

# Development
node_modules
*.local

# Cache
.cache
.mf
.rollup.cache
tsconfig.tsbuildinfo

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

# Editor
.vscode/*
!.vscode/launch.json
!.vscode/*.code-snippets

.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

# Husky
**/_/

# Local Netlify folder
.netlify
9 changes: 9 additions & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Check for changed files and filter out certain suffixes
if git diff --cached --name-only | grep -E '\.(ts|tsx|json|html)$' | grep -q .; then
echo "Running checks..."
pnpm lint.check
pnpm test
else
echo "No relevant changes, skipping checks."
fi

3 changes: 3 additions & 0 deletions .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"packages/app": "0.1.0"
}
149 changes: 149 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
<br>
<p align="center">
<img alt="Don Logo" width="300" src="https://raw.githubusercontent.com/lindenquan/don/main/.github/assets/logo.png" />
</p>
<br>
<p align="center">
<a href="https://github.com/lindenquan/don/actions/workflows/ci.yaml">
<img src="https://img.shields.io/github/actions/workflow/status/lindenquan/don/ci.yaml?branch=main&logo=github&style=for-the-badge" alt="Don CI">
</a>
<a href="https://don.doctornova.net/" target="_blank">
<img src="https://img.shields.io/badge/Cloudflare_Pages-0690FA?labelColor=grey&logo=Cloudflare&style=for-the-badge" alt="Cloudflare Pages">
</a>
<a href="https://app.codecov.io/github/lindenquan/don">
<img src="https://img.shields.io/codecov/c/github/lindenquan/don/master.svg?style=for-the-badge" alt="Codecov">
</a>
<a href=""><img src="https://img.shields.io/badge/License-ISC-blue.svg?style=for-the-badge" alt="License" /></a>
</p>
<br>
<br>

<h1 align="center">Personal Financial Management App</h1>

## Table of Contents

- [Tech stack](#tech-stack)
- [Project Structure](#project-structure)
- [Development](#development)
- [Production](#production)
- [Roadmap](#roadmap)

## Tech stack

[pNpm](https://pnpm.io/): Fast, disk space efficient package manager

[Release Please](https://github.com/googleapis/release-please): Release Please automates CHANGELOG generation, the creation of GitHub releases, and version bumps for your projects.

[Husky](https://github.com/typicode/husky): Auto run `lint`, `unit tests`, `build` before commit.

[SolidJS](https://www.solidjs.com/): Simple and performant reactivity for building user interfaces.

[Vite](https://vitejs.dev/): Frontend Tooling. It uses Rollup and esbuild internally for bundling

[Vitest](https://vitest.dev/): Testing Framework.

## Project Structure

This project is using Qwik with [QwikCity](https://qwik.dev/qwikcity/overview/). QwikCity is just an extra set of tools on top of Qwik to make it easier to build a full site, including directory-based routing, layouts, and more.

Inside your project, you'll see the following directory structure:

```
├── public/
│ └── ...
└── src/
├── components/
│ └── ...
└── routes/
└── ...
```

- `src/routes`: Provides the directory-based routing, which can include a hierarchy of `layout.tsx` layout files, and an `index.tsx` file as the page. Additionally, `index.ts` files are endpoints. Please see the [routing docs](https://qwik.dev/qwikcity/routing/overview/) for more info.

- `src/components`: Recommended directory for components.

- `public`: Any static assets, like images, can be placed in the public directory. Please see the [Vite public directory](https://vitejs.dev/guide/assets.html#the-public-directory) for more info.

## Development

Development mode uses [Vite's development server](https://vitejs.dev/). The `dev` command will server-side render (SSR) the output during development.

```shell
pnpm start
```

> Note: during dev mode, Vite may request a significant number of `.js` files. This does not represent a Qwik production build.
## Production

The production build will generate client and server modules by running both client and server build commands. The build command will use Typescript to run a type check on the source code.

```shell
pnpm build
```

## Roadmap

- 🚧 <span style="color:blue">**TODO**</span> Account Aggregation

- Link multiple bank accounts, credit cards, loans, and investment accounts.
- Real-time synchronization of balances and transactions.

- 🚧 <span style="color:blue">**TODO**</span> Expense Tracking

- Automatically categorize transactions (e.g., groceries, entertainment, utilities) by taking pictures of receipts.
- Manual entry of expenses and transactions.
- Support for splitting transactions (e.g., shared bills).
- Tagging expenses for more personalized tracking (e.g., vacations, business).

- 🚧 <span style="color:blue">**TODO**</span> Income Tracking

- Record and categorize income (salary, freelance, dividends, etc.).
- Monitor recurring income streams and one-time payments.
- Integration with payroll systems and tax tracking for income insights.

- 🚧 <span style="color:blue">**TODO**</span> Bill Management

- Add and track recurring bills (rent, utilities, subscriptions, etc.).
- Bill reminders and notifications (upcoming due dates).
- Ability to set up autopay or mark bills as paid.

- 🚧 <span style="color:blue">**TODO**</span> Investment Tracking

- Link investment accounts and track portfolio performance.
- Track asset allocations (stocks, bonds, mutual funds, etc.).
- Monitor net worth based on assets and liabilities.
- Portfolio diversification and investment insights.

- 🚧 <span style="color:blue">**TODO**</span> Debt Management

- Track loans (student loans, mortgages, credit card debt).
- Payment reminders and automated debt payoff plans (e.g., debt snowball, debt avalanche).
- Interest calculation and amortization schedules.

- 🚧 <span style="color:blue">**TODO**</span> Financial Insights & Reports

- Visualize monthly cash flow (income vs. expenses).
- Detect trends in cash flow patterns (e.g., surpluses, deficits).
- Forecast future cash flow based on current spending patterns.
- Generate monthly, quarterly, and annual financial reports.
- Provide insights into spending patterns, income trends, and savings performance.
- Track overall net worth based on assets (bank balances, properties) and liabilities (debts, loans).
- Historical data visualization to track net worth growth or decline.

- 🚧 <span style="color:blue">**TODO**</span> Credit Score Monitoring

- Link with credit score agencies to monitor and report credit scores.
- Provide insights on how to improve the credit score.
- Offer alerts for changes in credit reports.

- 🚧 <span style="color:blue">**TODO**</span> Alerts & Notifications

- Customizable alerts for various financial events (e.g., low balance, overspending, bill due).
- Notifications for account changes, suspicious activity, or significant financial milestones.
- Weekly or monthly summaries of financial activities.

- 🚧 <span style="color:blue">**TODO**</span> Security Features
- Bank-level encryption to protect sensitive data.
- Biometric login (fingerprint, face ID).
- Automatic logout after a period of inactivity.
42 changes: 42 additions & 0 deletions biome.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"$schema": "https://biomejs.dev/schemas/1.9.3/schema.json",
"files": {
"ignoreUnknown": true,
"ignore": [
"**/dist/**",
"**/coverage/**",
"node_modules/",
".husky/",
".github/",
".turbo/"
]
},
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 2
},
"organizeImports": {
"enabled": true
},
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"suspicious": {
"noExplicitAny": "off"
},
"a11y": {
"useButtonType": "off"
},
"style": {
"noNonNullAssertion": "off"
}
}
},
"json": {
"formatter": {
"lineWidth": 1
}
}
}
34 changes: 34 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"name": "don",
"description": "personal financial management app",
"author": "Linden Quan",
"repository": {
"type": "git",
"url": "https://github.com/lindenquan/don"
},
"engines": {
"node": ">=18.17.0"
},
"packageManager": "[email protected]",
"keywords": [
"financial management"
],
"license": "ISC",
"private": false,
"scripts": {
"preinstall": "npx only-allow pnpm",
"postinstall": "husky",
"lint.check": "biome check --verbose",
"lint.fix": "biome check --write",
"build": "turbo build",
"test": "turbo test"
},
"devDependencies": {
"@biomejs/biome": "1.9.3",
"husky": "^9.1.6",
"turbo": "^2.1.3",
"typescript": "^5.6.2",
"vite": "^5.4.8",
"vitest": "^2.1.2"
}
}
2 changes: 2 additions & 0 deletions packages/app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
node_modules
dist
34 changes: 34 additions & 0 deletions packages/app/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
## Usage

Those templates dependencies are maintained via [pnpm](https://pnpm.io) via `pnpm up -Lri`.

This is the reason you see a `pnpm-lock.yaml`. That being said, any package manager will work. This file can be safely be removed once you clone a template.

```bash
$ npm install # or pnpm install or yarn install
```

### Learn more on the [Solid Website](https://solidjs.com) and come chat with us on our [Discord](https://discord.com/invite/solidjs)

## Available Scripts

In the project directory, you can run:

### `npm run dev` or `npm start`

Runs the app in the development mode.<br>
Open [http://localhost:3000](http://localhost:3000) to view it in the browser.

The page will reload if you make edits.<br>

### `npm run build`

Builds the app for production to the `dist` folder.<br>
It correctly bundles Solid in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.<br>
Your app is ready to be deployed!

## Deployment

You can deploy the `dist` folder to any static host provider (netlify, surge, now, etc.)
Loading

0 comments on commit 155bc15

Please sign in to comment.