COINEST Dashboard UI is a responsive finance dashboard built with React, TypeScript, Vite, Tailwind CSS, React Router, and Recharts. The project focuses on a clean glassmorphism-style interface for viewing balances, income and expense summaries, charts, recent transactions, activity, savings goals, and profile settings.
This project currently uses static mock data for the dashboard widgets and placeholder pages for several modules, which makes it a good starting point for a finance admin panel, banking UI, or personal finance dashboard.
https://dashboard-ui-pink-zeta.vercel.app/dashboard
- Desktop sidebar navigation with a three-column dashboard layout
- Mobile bottom navigation for smaller screens
- Light and dark theme toggle
- Interactive modals for quick actions and saving plans
- Profile page with editable form sections and settings panels
- Responsive application shell with sidebar, sticky header, and mobile bottom navigation
- Dashboard overview with balance card, summary cards, chart, statistics, and recent activity
- Quick action modal for top-up, transfer, request, and history flows
- Saving plans widget with modal-based plan creation
- Daily spending limit progress section
- Cashflow bar chart built with Recharts
- Expense breakdown pie chart built with Recharts
- Recent transactions table with mock transaction states
- Profile page with personal information, security, and notification settings
- Placeholder pages for Payments, Transactions, Invoices, Cards, Saving Plans, Investments, Inbox, Promos, and Insights
- Dark mode toggle handled in the header
- React 19
- TypeScript
- Vite 6
- Tailwind CSS 4
- React Router DOM 7
- Recharts
- Lucide React
The app is routed with react-router-dom and redirects / to /dashboard.
| Route | Purpose |
|---|---|
/dashboard |
Main finance dashboard |
/payments |
Placeholder page |
/transactions |
Placeholder page |
/invoices |
Placeholder page |
/cards |
Placeholder page |
/saving-plans |
Placeholder page |
/investments |
Placeholder page |
/inbox |
Placeholder page |
/promos |
Placeholder page |
/insights |
Placeholder page |
/profile |
User profile and settings page |
The main dashboard is composed of these sections:
CardWidget: shows the main card, balance, expiry, and CVVQuickActions: opens modals for top-up, transfer, request, and historyDailyLimit: displays current daily spending progressSavingPlans: lists savings goals and allows adding new plansSummaryCards: shows total income, total expense, and total savingsCashflowChart: shows monthly income vs expense with a stacked bar chartRecentTransactions: displays a transaction table with mock recordsStatistic: shows expense distribution in a pie chartRecentActivity: shows grouped activity feed entries
dashboard-ui/
|- src/
| |- components/
| |- pages/
| |- App.tsx
| |- main.tsx
| |- index.css
|- .env.example
|- index.html
|- package.json
|- package-lock.json
|- tsconfig.json
|- vite.config.ts
- Node.js 18 or newer
- npm
- Git
git clone https://github.com/aayushsoam/dashboard-ui.git
cd dashboard-uinpm installIf you already have a lockfile-based setup and want a clean install, you can use:
npm ciThis project includes an .env.example file with:
GEMINI_API_KEYAPP_URL
For the current UI, these values are not required to simply run the dashboard locally. If you still want local environment variables, create a .env.local file based on .env.example.
Examples:
cp .env.example .env.localCopy-Item .env.example .env.localThen update the values if your future implementation needs them.
npm run devThe Vite dev server runs on:
http://localhost:3000
npm run buildnpm run preview| Script | Description |
|---|---|
npm run dev |
Starts the Vite development server on port 3000 |
npm run build |
Creates a production build |
npm run preview |
Previews the production build locally |
npm run lint |
Runs TypeScript type-checking with tsc --noEmit |
npm run clean |
Removes the dist folder using rm -rf dist |
This project can be deployed to Vercel as a Vite frontend.
- Push this repository to GitHub.
- Sign in to Vercel.
- Click Add New Project.
- Import the GitHub repository.
- Vercel should detect it as a Vite project automatically.
- Keep the default install and build settings, or confirm:
- Install Command:
npm install - Build Command:
npm run build - Output Directory:
dist
- Install Command:
- Click Deploy.
npm install -g vercel
vercelFor a production deployment:
vercel --prodThis app uses BrowserRouter, which means it behaves like a Single Page Application. Directly opening routes such as /profile or /transactions can fail on static hosting unless all routes are rewritten to index.html.
The included vercel.json file handles that rewrite automatically for Vercel.
- The project is frontend-focused and currently uses mock/static data.
- Most secondary pages are placeholder screens, not fully implemented modules.
- Dark mode is toggled from the header and works by adding or removing the
darkclass on the root document. - The app uses remote avatar images from
pravatar.cc. @google/genai,dotenv, andexpressare present in dependencies, but the current UI does not actively use an Express backend or Gemini-powered workflow.- The
cleanscript usesrm -rf, which works in Unix-like shells. On Windows, you may prefer deletingdistmanually or replacing that script with a cross-platform alternative if needed.
- Replace mock data with API-driven finance data
- Connect quick actions to real transaction workflows
- Add authentication and protected routes
- Persist profile settings and savings plans to a backend
- Replace placeholder pages with complete feature modules
- Add filters, search logic, and sorting to the transactions table
This repository does not currently define a license file. Add one if you plan to distribute or reuse the project publicly.
