Skip to content

Commit 4217fab

Browse files
committed
feat: add frontend dashboard, update docs and gitignore
1 parent bb87243 commit 4217fab

45 files changed

Lines changed: 10022 additions & 4324 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,11 @@ METRICS_ENABLED=false
7474

7575
# Log level: trace, debug, info, warn, error, fatal
7676
LOG_LEVEL=info
77+
78+
# Notification Service
79+
SMTP_HOST=smtp.gmail.com
80+
SMTP_PORT=587
81+
SMTP_USER=CHANGE_ME@gmail.com
82+
SMTP_PASS=CHANGE_ME_app_password
83+
SMTP_FROM=noreply@resumeecosystem.dev
84+
WS_PORT=4061

.github/workflows/test.yml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
name: Tests
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
pull_request:
7+
branches: [ main ]
8+
9+
jobs:
10+
test:
11+
runs-on: ubuntu-latest
12+
13+
# Run a postgres service container for integration tests
14+
services:
15+
postgres:
16+
image: postgres:15
17+
env:
18+
POSTGRES_USER: postgres
19+
POSTGRES_PASSWORD: postgres
20+
POSTGRES_DB: resume_test
21+
ports:
22+
- 5432:5432
23+
# Set health check to wait until postgres is ready
24+
options: >-
25+
--health-cmd pg_isready
26+
--health-interval 10s
27+
--health-timeout 5s
28+
--health-retries 5
29+
30+
steps:
31+
- uses: actions/checkout@v4
32+
33+
- name: Setup Node.js
34+
uses: actions/setup-node@v4
35+
with:
36+
node-version: 20
37+
cache: 'npm'
38+
39+
- name: Install dependencies
40+
run: npm ci
41+
42+
- name: Generate Prisma Client (Root)
43+
# This generates client for all services if configured correctly in root package.json
44+
run: npm run prisma:generate
45+
46+
- name: Run Tests
47+
env:
48+
# Point to the service container
49+
DATABASE_URL: postgresql://postgres:postgres@localhost:5432/resume_test
50+
POSTGRES_URL: postgresql://postgres:postgres@localhost:5432/resume_test
51+
JWT_SECRET: test-secret-key-12345678901234567890123456789012
52+
NODE_ENV: test
53+
run: npm run test

.gitignore

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,15 @@ Thumbs.db
2828
.env
2929
.env.*.local
3030
.env.local
31+
.env.development.local
32+
.env.test.local
33+
.env.production.local
34+
35+
# Security
36+
*.pem
37+
*.key
38+
*.cert
39+
.npmrc
3140

3241
# IDE config
3342
.idea/
@@ -46,6 +55,16 @@ coverage/
4655
# Generated Prisma Clients
4756
**/src/generated/client
4857

58+
# Post markdown file
59+
post.md
60+
61+
# Docs promotion folder
62+
docs/promotion/
63+
docs/promotion/devto-post.md
64+
docs/promotion/hackernews-post.md
65+
docs/promotion/linkedin-post.md
66+
docs/promotion/reddit-post.md
67+
4968

5069

5170

README.md

Lines changed: 123 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,21 @@ A next-generation **Resume Building & Career Ecosystem** that automatically buil
99
## 📘 Table of Contents
1010

1111
1. [Overview](#overview)
12-
2. [Architecture](#architecture)
13-
3. [Tech Stack](#tech-stack)
14-
4. [Microservices](#microservices)
15-
5. [Data Flow](#data-flow)
16-
6. [Business Logic](#business-logic)
17-
7. [Folder Structure](#folder-structure)
18-
8. [Installation](#installation)
19-
9. [Running the System](#running-the-system)
20-
10. [API Endpoints](#api-endpoints)
21-
11. [Events & Topics](#events--topics)
22-
12. [Testing](#testing)
23-
13. [Environment Variables](#environment-variables)
24-
14. [Troubleshooting](#troubleshooting)
25-
15. [Future Enhancements](#future-enhancements)
12+
2. [Quick Demo](#quick-demo)
13+
3. [Architecture](#architecture)
14+
4. [Tech Stack](#tech-stack)
15+
5. [Microservices](#microservices)
16+
6. [Data Flow](#data-flow)
17+
7. [Business Logic](#business-logic)
18+
8. [Folder Structure](#folder-structure)
19+
9. [Installation](#installation)
20+
10. [Running the System](#running-the-system)
21+
11. [API Endpoints](#api-endpoints)
22+
12. [Events & Topics](#events--topics)
23+
13. [Testing](#testing)
24+
14. [Environment Variables](#environment-variables)
25+
15. [Troubleshooting](#troubleshooting)
26+
16. [Future Enhancements](#future-enhancements)
2627

2728
---
2829

@@ -45,6 +46,47 @@ To create a connected backend that integrates multiple sub-platforms — Interns
4546

4647
---
4748

49+
## 🚀 Quick Demo (60 seconds)
50+
51+
Get a fully working resume ecosystem with real data in one command:
52+
53+
```bash
54+
npm run demo
55+
```
56+
57+
Then open http://localhost:5173 and log in with any demo account:
58+
59+
| Name | Email | Password | Resume Score |
60+
|------|-------|----------|--------------|
61+
| Arjun Sharma (CS Student) | arjun@demo.com | demo1234 | 87/100 |
62+
| Priya Nair (Bootcamp Grad) | priya@demo.com | demo1234 | 72/100 |
63+
| Rahul Mehta (Senior Dev) | rahul@demo.com | demo1234 | 95/100 |
64+
65+
### 📸 Screenshots
66+
> Run `npm run demo` to see the full UI live.
67+
68+
```
69+
+-------------------------------------------------------------+
70+
| RESUME ECOSYSTEM DASHBOARD [Logout] |
71+
| |
72+
| Welcome back, Arjun! |
73+
| Resume Score: 87/100 (Top 10%) |
74+
| |
75+
| [ Recent Activities ] |
76+
| --------------------------------------------------------- |
77+
| • Google Summer of Code 2024 [VERIFIED] +15 pts |
78+
| • AWS Solutions Architect [VERIFIED] +10 pts |
79+
| • Smart India Hackathon Finalist [VERIFIED] +12 pts |
80+
| |
81+
| [ Your Resume ] |
82+
| --------------------------------------------------------- |
83+
| [View PDF] [Share Link] [History] |
84+
| |
85+
+-------------------------------------------------------------+
86+
```
87+
88+
---
89+
4890
## 🏗️ Architecture
4991

5092
```
@@ -61,33 +103,35 @@ Integration → Activity → Verification → Resume → Notification → File R
61103

62104
## ⚙️ Tech Stack
63105

64-
| Layer | Technology |
65-
| :-------- | :-------------------------------------- |
66-
| Runtime | Node.js 20+ (TypeScript/JavaScript) |
67-
| Framework | Express.js / Fastify |
68-
| ORM | Prisma with PostgreSQL |
69-
| Cache | Redis 7 |
70-
| Messaging | KafkaJS (Kafka 3.7+) |
71-
| Auth | JWT (HS256/RS256) |
72-
| Docs | Swagger / OpenAPI |
73-
| Infra | Docker Compose |
74-
| Testing | Jest / Supertest / Testcontainers |
75-
| Utils | Nodemon, Concurrently, ESLint, Prettier |
106+
| Layer | Technology |
107+
| :--- | :--- |
108+
| **Frontend** | **React 18**, **TypeScript**, **TailwindCSS**, **Vite** |
109+
| **Backend** | **Node.js 20+**, **Fastify**, **Express** |
110+
| **Database** | **PostgreSQL** (via Supabase or Local Docker) |
111+
| **ORM** | **Prisma** (Schema-driven data access) |
112+
| **Messaging** | **Kafka** (Event-driven architecture) |
113+
| **Cache** | **Redis** (Rate limiting & caching) |
114+
| **Auth** | **JWT** (Stateless authentication) |
115+
| **Docs** | **Swagger / OpenAPI** |
116+
| **Infrastructure** | **Docker Compose** |
76117

77118
---
78119

79120
## 🧱 Microservices
80121

81-
| Service | Port | Responsibility |
82-
| ------------------------ | ------ | ------------------------------------------------- |
83-
| **api-gateway** | `4000` | Central router, CORS, JWT pass-through |
84-
| **auth-service** | `4010` | User registration, login, JWT issuance |
85-
| **activity-service** | `4020` | Manage internships, courses, hackathons, projects |
86-
| **verification-service** | `4030` | Verify authenticity (hash/signature/OAuth) |
87-
| **resume-service** | `4040` | Build, rank, and version resumes |
88-
| **integration-service** | `4050` | Connect external APIs (GitHub, Coursera, etc.) |
89-
| **notification-service** | `4060` | Consume `resume.version.published` events |
90-
| **file-service** | `4070` | Render resume PDFs and templates |
122+
| Service | Port | Responsibility |
123+
| :--- | :--- | :--- |
124+
| **web-app** | `5173` | Modern React Frontend Dashboard |
125+
| **api-gateway** | `4000` | Central router, CORS, JWT pass-through |
126+
| **auth-service** | `4010` | User registration, login, JWT issuance |
127+
| **activity-service** | `4020` | Manage internships, courses, hackathons |
128+
| **verification-service** | `4030` | Verify authenticity (hash/signature) |
129+
| **resume-service** | `4040` | Build, rank, and version resumes |
130+
| **integration-service** | `4050` | Connect external APIs (GitHub, LinkedIn) |
131+
| **notification-service** | `4060` | Email & WebSocket notifications |
132+
| **file-service** | `4070` | Render resume PDFs |
133+
134+
---
91135

92136
---
93137

@@ -175,48 +219,52 @@ resume-ecosystem/
175219
* Node.js ≥ 20
176220
* Docker & Docker Compose
177221
* npm / pnpm
178-
* Kafka & Postgres ports open (`9092`, `5432`)
179222

180223
### 1. Clone Repository
181224

182225
```bash
183-
git clone https://github.com/<yourname>/resume-ecosystem.git
184-
cd resume-ecosystem
226+
git clone https://github.com/srivilliamsai/resume-ecosystem-node.git
227+
cd resume-ecosystem-node
185228
```
186229

187-
### 2. Install Dependencies & Build
230+
### 2. Install Dependencies
188231

189232
```bash
190233
npm install
191-
npm run prisma:generate
192-
npm run build
193234
```
194235

195-
### 3. Start Infrastructure
236+
### 3. Start Infrastructure (Database & Kafka)
196237

197238
```bash
198-
cd docker
199-
docker compose up -d
239+
npm run docker:up
200240
```
241+
> Wait 10-15 seconds for containers to initialize.
201242
202-
Services started:
243+
### 4. Initialize Database
203244

204-
* Kafka → localhost:9092
205-
* Zookeeper → localhost:2181
206-
* Postgres → localhost:5432
207-
* Redis → localhost:6379
208-
* Kafka UI → [http://localhost:8080](http://localhost:8080)
245+
```bash
246+
npm run db:push
247+
npm run seed # (Optional: Populates demo data)
248+
```
209249

210-
### 4. Run All Services
250+
### 5. Run Full Stack (Frontend + Backend)
211251

212252
```bash
213-
cd ..
214253
npm run dev
215254
```
216255

217256
---
218257

219-
## 🌐 API Endpoints
258+
## 🌐 Access Points
259+
260+
| Application | URL |
261+
| :--- | :--- |
262+
| **Frontend Dashboard** | [http://localhost:5173](http://localhost:5173) |
263+
| **API Documentation** | [http://localhost:4000/docs](http://localhost:4000/docs) |
264+
| **Kafka UI** | [http://localhost:8080](http://localhost:8080) |
265+
| **Prisma Studio** | `npx prisma studio` |
266+
267+
---
220268

221269
### Auth Service
222270

@@ -326,12 +374,26 @@ FILE_PORT=4070
326374

327375
---
328376

329-
## 🧭 Future Enhancements
377+
## 🧭 Roadmap
330378

331-
* Add OAuth 2.0 full integration (Google, LinkedIn, Coursera)
332-
* Implement GraphQL API gateway
333-
* Introduce ML-powered Resume Scoring
334-
* Add real-time WebSocket notifications
335-
* Deploy to Kubernetes with Helm charts
379+
- [x] **Frontend:** React + Tailwind Dashboard
380+
- [x] **Backend:** 8 Microservices Architecture
381+
- [x] **Messaging:** Kafka Event Pipeline
382+
- [x] **Database:** PostgreSQL + Prisma Schema
383+
- [ ] **Auth:** OAuth 2.0 (Google/GitHub/LinkedIn)
384+
- [ ] **Deployment:** Docker & Kubernetes Helm Charts
385+
- [ ] **AI:** Resume Scoring & Suggestion Engine
336386

337-
---
387+
## 🤝 Contributing
388+
389+
Contributions are welcome! Please open an issue first to discuss what you would like to change.
390+
391+
1. Fork the Project
392+
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
393+
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
394+
4. Push to the Branch (`git push origin feature/AmazingFeature`)
395+
5. Open a Pull Request
396+
397+
## 📄 License
398+
399+
Distributed under the MIT License. See `LICENSE` for more information.

0 commit comments

Comments
 (0)