A dark-themed personal finance web app combining:
- Progressive onboarding & account linking
- JWT authentication with “remember me”
- Financial dashboard with charts and AI stock suggestions
- Receipt OCR extraction and transaction creation
- Conversational AI assistant (FinBot) powered by OpenAI using contextual prompts
- Educational tracks and quizzes to improve users’ financial literacy
- Consistent navy/indigo gradient UI with skeleton loaders and markdown-rendered replies
- Key Features
- Architecture Overview
- Directory / Component Breakdown
- Getting Started
- Environment Variables
- Backend API Contracts
- Styling & Theme
- Skeleton Loaders
- Educational Tracks & Quiz
- Security Considerations
- Development Workflow / Scripts
- Future Enhancements
- Troubleshooting
- License
- Onboarding flow: Multi-step signup (
StepOne,StepTwo,StepThree) collecting basic info, financial preferences, and account selection with prefill support from existing session. - Authentication: Sign-in with “remember me” and JWT persisted in
localStorage. - Dashboard: Displays current balance, credited/debited totals, recent transactions, spending categories, investment performance, and AI stock recommendations.
- FinBot Chat: Frontend-only OpenAI integration (GPT-4 Turbo) that builds prompts from selected account context and renders answers with markdown (
react-markdown+remark-gfm). - OCR Receipt Scanner: Upload receipt images, extract structured transaction details via backend OCR, allow manual corrections, and submit transactions.
- AI Stock Suggestions: Backend-provided stock recommendations displayed with reasoning, risk level, and metadata.
- Educational Tracks & Quiz: Financial education modules where users can take quizzes to assess and improve their understanding.
- Theme: Unified dark/navy gradient aesthetic with rounded cards, accent gradients, focus states, and responsive layout.
- Skeleton loaders: Improve perceived performance for metrics, forms, and content while data is loading.
- Frontend: React application using functional components/hooks, styled via utility classes (Tailwind-style) with no external config modifications required.
- Backend: REST API managing authentication, user profiles, accounts, transactions, OCR parsing, stock recommendations, and user education progress/quiz evaluation.
- AI Integration: Direct frontend call to OpenAI for FinBot, using user/account context to shape responses.
- Persistence: JWT, selected account, and remembered email stored in
localStorage.
Signin.jsx— Login form with “remember me”; saves JWT.Signup.jsx— Oversees multi-step sign-up.StepOne.jsx— Name, email, password.StepTwo.jsx— Financial preferences (budget, investment skill).StepThree.jsx— Account selection or linking with prefill support.
FinancialDashboard.jsx— Overview of finances: balance, transactions, spending vs budget, investment performance, stock suggestions, and embeddedChatBot.
ChatBot.jsx— Builds system prompt from user context, sends question to OpenAI, displays markdown-rich responses.
OCRReceiptScanner.jsx— Upload receipts, run OCR, edit extracted transaction, assign categories, and submit to backend.
- Components/pages managing educational tracks, presenting lessons/tips, and rendering quizzes to capture user knowledge and progress.
- Node.js (v18+ recommended)
- Backend server running with required endpoints
- OpenAI API key (for FinBot prototype)
# Clone or unzip the repository
cd /Finwell-Hacks
# Install dependencies for both frontend and server
cd frontend
npm install
cd ../server
npm install