| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
A modern Progressive Web App (PWA) for tracking stocks, mutual funds, and crypto - live prices, gains/losses, allocation breakdowns, and annualized returns (XIRR), in one place.
This repository contains two sub-projects:
| Area | Choice |
|---|---|
| Framework | Angular 20 (standalone components, no NgModules) |
| Reactivity | Angular signals + RxJS 7 |
| Control flow | Native @if / @for / @empty |
| Auth | Firebase Authentication via @angular/fire 20 |
| Language | TypeScript 5.8 |
| Styling | Component-scoped SCSS + CSS custom properties (dark/light themes) |
| 3D accents | Three.js (lazy-loaded, reduced-motion aware) |
| PWA | @angular/service-worker (offline + installable) |
| Routing | Hash-based, lazy-loaded routes |
| Area | Choice |
|---|---|
| Runtime | Next.js (App Router) - API routes only, no UI |
| Database | MongoDB Atlas via Mongoose |
| Auth | Firebase Admin SDK |
| Edge middleware | CORS, per-IP rate limiting, body-size limit (middleware.ts) |
git clone https://github.com/MisterStranger03/Investfolio.git
cd Investfoliocd investfolio-frontend
npm install
npm start # ng serve -> http://localhost:4200The PWA service worker is only active in a production build served over HTTP(S), not in ng serve.
npm run build # production build -> dist/my-portfolio-frontend
npm run serve:prod # serve built bundle (service worker + offline active)
npm test # unit tests (Karma/Jasmine)cd investfolio-backend
npm install
# create .env.local with the env vars below
npm run dev # http://localhost:3000
npx tsc --noEmit # type-check# Google Sheets API
GOOGLE_SHEETS_ID=YOUR_SHEET_ID
GOOGLE_CLIENT_EMAIL=YOUR_SERVICE_ACCOUNT_EMAIL
GOOGLE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nYOUR_KEY\n-----END PRIVATE KEY-----\n"
# MongoDB
MONGODB_URI=mongodb+srv://<username>:<password>@cluster.mongodb.net/myportfolio
# Firebase Admin
FIREBASE_PROJECT_ID=YOUR_FIREBASE_PROJECT_ID| Layer | Platform | Notes |
|---|---|---|
| Frontend (Angular) | Vercel / Firebase Hosting | Deploy the dist/ build output |
| Backend (Next.js) | Render / Vercel | API routes only |
| Database | MongoDB Atlas | Cloud-hosted |
| Auth | Firebase | Login, Google sign-in, password reset |
| Component | Technology | Purpose |
|---|---|---|
| Frontend | Angular 20 (PWA) | Modern UI, offline-ready |
| Backend | Next.js (API Routes) | Data bridge - Firebase, MongoDB, Sheets |
| Database | MongoDB Atlas | Persistent user and portfolio data |
| Auth | Firebase | Secure authentication |
| Live Data | Google Sheets + Finance API | Real-time stock/fund/crypto prices |
Built by Raman Sah.
Feedbacks, bug reports, and suggestions are welcome - use the Contact / Feedback form available inside the app. Every report is read and appreciated.
If you find Investfolio useful, consider giving it a star on GitHub. It means a lot and helps others discover the project.
| Back | FazBrowse Home | New Git URL |