A full-stack web application for managing personal tasks, finances, notes, and budgets.
- 📝 Task Management
- 💰 Finance Tracking
- 📒 Note Taking
- 💵 Budget Planning
- 🏷️ Category Management
- 🔐 User Authentication
- Node.js with TypeScript
- Express.js for API routes
- PostgreSQL with Drizzle ORM
- JWT for authentication
- Jest for testing
- Next.js 15 with App Router
- React 19
- TypeScript
- TailwindCSS
- ESLint for code quality
.
├── backend/ # Backend API server
│ ├── src/
│ │ ├── controllers/ # Request handlers
│ │ ├── services/ # Business logic
│ │ ├── routes/ # API route definitions
│ │ └── drizzle/ # Database configuration
│ └── package.json
│
└── frontend/ # Next.js frontend
└── task/
├── src/
│ ├── app/ # Next.js app router
│ └── components/ # React components
└── package.json
- Node.js (v18 or higher recommended)
- PostgreSQL
- pnpm package manager
- Navigate to the backend directory:
cd backend- Install dependencies:
pnpm install- Create a
.envfile with your database configuration:
DATABASE_URL=postgres://user:password@localhost:5432/dbname
JWT_SECRET=your_jwt_secret
- Run database migrations:
pnpm migrate- Start the development server:
pnpm dev- Navigate to the frontend directory:
cd frontend/task- Install dependencies:
pnpm install- Start the development server:
pnpm devThe frontend will be available at http://localhost:3000
pnpm dev- Start development server with hot reloadpnpm test- Run testspnpm build- Build for productionpnpm generate- Generate Drizzle migrationspnpm migrate- Run database migrationspnpm seed- Seed the database with initial data
pnpm dev- Start development server using Turbopackpnpm build- Build for productionpnpm start- Start production serverpnpm lint- Run ESLint
Users
+--------------------+
| id |
| username |
| email |
| password |
+--------------------+
▲
│
│ 1:N
│
+-----------+-----------+-----------+-----------+
│ │ │ │ │
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
Categories Tasks Notes Plans Finances
+--------+ +--------+ +--------+ +--------+ +--------+
| id | | id | | id | | id | | id |
|user_id | |user_id | |user_id | |user_id | |user_id |
| name | | title | | title | | title | | type |
+--------+ | desc | |content | | desc | |amount |
▲ |dueDate | |priority| |startDate| | desc |
│ |priority| +--------+ |endDate | |category_|
│ +--------+ +--------+ | id |
│ +--------+
│ ▲
│ │
│ Budgets │
│ +----------+ │
└-----------| id | │
| user_id |----------------------┘
|category_id|
| amount |
| period |
|startDate |
| endDate |
+----------+
-
Users - Central entity that owns all other resources
- One user can have many categories, tasks, notes, plans, finances, and budgets
- Primary key for user authentication and resource ownership
-
Categories - Classifies finances and budgets
- Belongs to one user (user_id)
- Can be linked to multiple finances and budgets
- Used for organizing financial transactions and budget planning
-
Finances - Tracks income and expenses
- Belongs to one user (user_id)
- Can be assigned to one category (category_id)
- Stores transaction amount, type (income/expense), and date
-
Budgets - Sets spending limits by category
- Belongs to one user (user_id)
- Linked to one category (category_id)
- Defines budget period (monthly/yearly) and amount
-
Tasks - Manages to-do items
- Belongs to one user (user_id)
- Includes due date, priority, and completion status
- Independent of other entities except user
-
Notes - Stores user notes
- Belongs to one user (user_id)
- Contains title, content, and priority
- Independent of other entities except user
-
Plans - Manages long-term planning
- Belongs to one user (user_id)
- Includes start and end dates
- Independent of other entities except user
- Always join through user_id when querying related data
- Use category_id to link finances with their categories
- Budget queries can combine with categories and finances for spending analysis
- Tasks, notes, and plans are standalone entities only linked to users
- All tables include timestamps for tracking creation/updates
The backend provides the following main API endpoints:
/api/auth- Authentication endpoints/api/tasks- Task management/api/notes- Note taking/api/finance- Financial tracking/api/budget- Budget planning/api/categories- Category management
ISC