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 Dec 2, 2024
0 parents commit 7133b3f
Show file tree
Hide file tree
Showing 35 changed files with 4,115 additions and 0 deletions.
15 changes: 15 additions & 0 deletions .changeset/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"$schema": "https://unpkg.com/@changesets/config@3.0.4/schema.json",
"changelog": "@changesets/cli/changelog",
"commit": [
"../scripts/commit.js",
{
"customOption": true
}
],
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "minor"
}
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
39 changes: 39 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Release

on:
push:
branches:
- main

concurrency: ${{ github.workflow }}-${{ github.ref }}

jobs:
release:
name: Release
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4

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

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22.x
cache: pnpm

- name: Install Dependencies
run: pnpm install

- name: Create Release Pull Request or Publish to npm
id: changesets
uses: changesets/action@v1
with:
title: Release packages
publish: pnpm run publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
45 changes: 45 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Build
dist/
lib/
coverage/
.turbo/
types/

# Development
node_modules/
*.local
**/.devcontainer.json
devcontainer/
# 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
18 changes: 18 additions & 0 deletions .husky/commit-msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
if [ -n "$GITHUB_ACTIONS" ]; then
echo "Running on GitHub Actions, skip commit messages"
else
INPUT_FILE=$1
START_LINE=`head -n1 $INPUT_FILE`
# Define a regex for conventional commit messages with scope
CONVENTIONAL_COMMIT_REGEX="^(init|feat|fix|docs|style|refactor|perf|test|chore|build|ci|revert)(\([a-zA-Z0-9]+\))?: .+"

# Check if the commit message matches the regex
if ! [[ "${START_LINE}" =~ ${CONVENTIONAL_COMMIT_REGEX} ]]; then
echo "Commit message is not conventional. It should follow the format: <type>(<scope>): <description>"
echo "Your message:"
echo "--------------"
echo $START_LINE
echo "--------------"
exit 1
fi
fi
20 changes: 20 additions & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
if [ -n "$GITHUB_ACTIONS" ]; then
echo "Running on GitHub Actions, skip checking changesets"
else
echo "Running locally"
# Check for changesets
if git diff --name-only | grep -q '^.changeset/.*\.md$'; then
echo "Detected uncommitted changesets"
else
pnpm changeset status --since=main
fi

# 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
fi
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.
10 changes: 10 additions & 0 deletions apps/don/.npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Ignore source files
src/

# Ignore test files
tests/
__tests__/

# Ignore configuration files
*.config.js
.env
25 changes: 25 additions & 0 deletions apps/don/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# @linden_quan/don

## 0.1.5

### Patch Changes

- f24e746: Test changeset

## 0.1.4

### Patch Changes

- 173b776: Test changeset

## 0.1.3

### Patch Changes

- Test changeset

## 0.1.2

### Patch Changes

- f232ce2: Test changesets
Loading

0 comments on commit 7133b3f

Please sign in to comment.