This repository was archived by the owner on Jan 14, 2026. It is now read-only.
Assignment 5 – Decisions and Tech Stack
🚀 Overview of This Release
Progress
This release marks a beginning in the development of FinQuest - transitioning from planning to actual implementation. We've built the foundational codebase for both the frontend web application and the backend API service, establishing the core infrastructure that will power FinQuest's web app
Building on the architecture decisions and planning completed in the previous release, we have:
- Implemented a modern Next.js web application with authentication and basic pages
- Built a FastAPI backend service with Supabase integration
- Established the development environment and tooling for both frontend and backend
➕ Added
📂 Architecture Decision Records (ADRs)
- ADR-009: Database, Authentication, and ORM – Supabase and SQLAlchemy
- Selected Supabase for database and authentication
- Chose SQLAlchemy as Python-native ORM
- Provides built-in authentication, storage, and real-time capabilities
- ADR-010: Frontend Component Library – Mantine
- Selected Mantine as the React component library
- Provides comprehensive UI components with excellent design system
- Includes plugins for extended functionality
🌐 Frontend Web Application app/web
Tech Stack: Next.js 15, React 19, TypeScript, Mantine UI, Supabase
Core Pages
- Landing Page (
pages/index.tsx)- Modern hero section with gradient background
- Call-to-action buttons for signup/login
- Responsive navigation header with logo
- Dark/light mode toggle support
- Authentication Pages (
pages/login.tsx&pages/signup.tsx)pages/login.tsx- User login with email/password and Google OAuthpages/signup.tsx- New user registrationpages/onboarding.tsx- Post-signup onboarding flow
Components
components/GradientBackground.tsx- Animated gradient background componentcomponents/ProtectedRoute.tsx- Route protection wrapper for authenticated pages
Authentication & State Management
contexts/AuthContext.tsx- Comprehensive authentication context with:- User session management
- Sign up, sign in, sign out functions
- Google OAuth integration
- Protected route handling
lib/supabase.ts- Supabase client configuration
🔧 Backend API Service (app/services/api/)
Tech Stack: FastAPI, Python 3.9+, Supabase, SQLAlchemy, uv package manager
Core Application
src/finquest_api/main.py- FastAPI application with:- CORS middleware configuration
- Router registration
- Swagger/ReDoc API documentation
- Version 0.1.0
src/finquest_api/config.py- Application settings and configurationsrc/finquest_api/schemas.py- Pydantic models for request/response validationsrc/finquest_api/auth_utils.py- Authentication utility functionssrc/finquest_api/supabase_client.py- Supabase client configuration
API Routers
routers/health.py- Health check and readiness endpointsrouters/api.py- Main API v1 endpointsrouters/auth.py- Authentication endpoints
🏗️ Project Structure
app/
├── web/ # Next.js frontend application
│ ├── pages/ # Page routes
│ ├── components/ # Reusable React components
│ ├── contexts/ # React contexts (Auth, etc.)
│ ├── lib/ # Utility libraries
│ ├── assets/ # Images and static assets
│ └── public/ # Public assets
└── services/
└── api/ # FastAPI backend service
└── src/
└── finquest_api/
├── routers/ # API route handlers
├── main.py # FastAPI app
├── config.py # Settings
├── schemas.py # Data models
└── auth_utils.py # Auth utilities
🔄 Architecture Integration
This release implements the following architecture decisions:
- ✅ Next.js + React frontend (ADR-002)
- ✅ FastAPI backend (ADR-003)
- ✅ TypeScript for type safety (ADR-004)
- ✅ RESTful API architecture (ADR-005)
- ✅ Supabase for database and auth (ADR-009)
- ✅ Mantine UI component library (ADR-010)
🐛 Issue Summary
No major issues in this release. The codebase compiles and runs successfully with all core features functional.
Known Limitations
- Onboarding flow is scaffolded but not fully implemented
- Portfolio management features are pending implementation
- Market data integration is planned for next release
- Testing suite needs to be added