Findash is a comprehensive financial dashboard that helps users track, analyze, and manage their financial data. The project leverages Next.js, React, Tailwind CSS, and Drizzle ORM with PostgreSQL for efficient data management and a user-friendly UI.
- Features
- Tech Stack
- Installation
- Environment Variables
- Running the Project
- Deployment
- Scripts
- License
- Real-time financial data tracking
- Visual financial insights with charts and graphs
- Expense and income management
- Investment portfolio tracking
- User authentication via Clerk
- Dark mode support
- Frontend: Next.js, React, Tailwind CSS, Radix UI
- Backend: Drizzle ORM, PostgreSQL, Hono (for serverless functions)
- Authentication: Clerk
- State Management: Zustand
- Forms: React Hook Form with Zod validation
- Charts: Recharts
- Database: PostgreSQL hosted on Neon.tech
- Node.js (>= 18.0.0) or Bun (>= 1.0.0)
- PostgreSQL (or use a hosted solution like Neon.tech)
- Clerk Account for authentication (Clerk.dev)
-
Clone the repository:
git clone https://github.com/yourusername/findash.git cd findash
-
Install dependencies:
-
Using Node.js:
npm install
-
Using Bun:
bun install
-
-
Set up environment variables:
- Copy
.env.example
to.env
- Fill in the required environment variables (see Environment Variables).
cp .env.example .env
- Copy
You need to configure the following environment variables in a .env
file:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=
DATABASE_URL=
NEXT_PUBLIC_APP_URL=
- Get the Clerk keys from Clerk's dashboard.
- Get the database credentials from your PostgreSQL provider (e.g., Neon.tech).
If you prefer to use Bun, the project is already set up to work seamlessly with it.
-
Start the development server using Bun:
bun run dev
-
For production builds:
bun run build bun run start
-
Running Drizzle ORM database scripts with Bun:
- Generate schema:
bun run db:generate
- Run migrations:
bun run db:migrate
- Seed the database:
bun run db:seed
- Generate schema:
If you're using Node.js and want to execute TypeScript files, TSX is a great option.
-
Install TSX globally:
npm install -g tsx
-
Modify the
package.json
to usetsx
for running TypeScript scripts:"scripts": { "db:migrate": "tsx ./scripts/migrate.ts", "db:seed": "tsx ./scripts/seed.ts" }
-
Run database scripts with Node.js using TSX:
- Run migrations:
npm run db:migrate
- Seed the database:
npm run db:seed
- Run migrations:
-
Install the Vercel CLI if you haven't already:
npm install -g vercel
-
Deploy your project:
vercel
-
Follow the prompts to link or create a new project.
-
Set up environment variables on Vercel's dashboard under "Settings".
-
Install the Netlify CLI if you haven't already:
npm install -g netlify-cli
-
Deploy your project:
netlify deploy
-
Follow the prompts to link or create a new site.
-
Set up environment variables on Netlify's dashboard under "Site settings" > "Build & deploy" > "Environment".
-
Install the Render CLI if you haven't already:
npm install -g render-cli
-
Deploy your project:
render deploy
-
Follow the prompts to link or create a new web service.
-
Set up environment variables on Render's dashboard under "Environment".
-
Install the Railway CLI if you haven't already:
npm install -g railway
-
Deploy your project:
railway up
-
Follow the prompts to link or create a new project.
-
Set up environment variables on Railway's dashboard under "Settings".
-
npm run dev
orbun run dev
: Starts the development server. -
npm run build
orbun run build
: Builds the app for production. -
npm run start
orbun run start
: Starts the production server. -
npm run lint
orbun run lint
: Runs ESLint for code quality checks. -
npm run format
orbun run format
: Formats code using Prettier. -
npm run db:generate
orbun run db:generate
: Generates Drizzle ORM schema from PostgreSQL. -
npm run db:migrate
orbun run db:migrate
: Runs database migrations. -
npm run db:seed
orbun run db:seed
: Seeds the database. -
npm run db:studio
orbun run db:studio
: Opens Drizzle Studio for database inspection.
This project is licensed under the MIT License. See the LICENSE file for more details.