PacMac commited on
Commit
e3f03ed
Β·
verified Β·
1 Parent(s): b312901

Create README.md

Browse files
Files changed (1) hide show
  1. README.md +114 -0
README.md ADDED
@@ -0,0 +1,114 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ ---
4
+ # VibeCode Portfolio Generator
5
+
6
+ ## Overview
7
+
8
+ VibeCode is a full-stack web application that generates dynamic portfolios from uploaded resumes using AI-powered content parsing. The application allows users to upload PDF, DOCX, or TXT resume files, which are then processed by OpenAI's GPT-4 to extract structured portfolio data and generate professional portfolio websites with custom subdomains.
9
+
10
+ ## System Architecture
11
+
12
+ ### Frontend Architecture
13
+ - **Framework**: React with TypeScript
14
+ - **Styling**: Tailwind CSS with shadcn/ui component library
15
+ - **Routing**: Wouter for client-side routing
16
+ - **State Management**: TanStack Query for server state management
17
+ - **Build Tool**: Vite for fast development and optimized builds
18
+ - **UI Components**: Radix UI primitives with custom styling
19
+
20
+ ### Backend Architecture
21
+ - **Runtime**: Node.js with Express.js
22
+ - **Language**: TypeScript with ES modules
23
+ - **Database**: PostgreSQL with Drizzle ORM
24
+ - **Database Provider**: Neon Database (serverless PostgreSQL)
25
+ - **File Processing**: Multer for file uploads, pdf-parse and mammoth for text extraction
26
+ - **AI Integration**: OpenAI GPT-4 for resume parsing and content generation
27
+
28
+ ### Project Structure
29
+ ```
30
+ β”œβ”€β”€ client/ # Frontend React application
31
+ β”œβ”€β”€ server/ # Backend Express.js API
32
+ β”œβ”€β”€ shared/ # Shared TypeScript types and schemas
33
+ β”œβ”€β”€ migrations/ # Database migration files
34
+ └── dist/ # Production build output
35
+ ```
36
+
37
+ ## Key Components
38
+
39
+ ### Database Schema
40
+ - **Portfolios Table**: Stores portfolio data including personal info, skills, experience, education, projects, and theming
41
+ - **Uploaded Files Table**: Tracks uploaded resume files with metadata and extracted text
42
+ - **JSON Fields**: Complex data structures (skills, experience, education, projects) stored as JSON
43
+
44
+ ### API Endpoints
45
+ - `POST /api/upload-resume`: Handles resume file uploads and AI processing
46
+ - `GET /api/portfolio/:subdomain`: Retrieves portfolio data by subdomain
47
+ - `GET /api/portfolios`: Lists all portfolios
48
+
49
+ ### File Processing Pipeline
50
+ 1. **Upload Validation**: File type (PDF/DOCX/TXT) and size validation (10MB limit)
51
+ 2. **Text Extraction**: Content extraction using appropriate parsers
52
+ 3. **AI Processing**: OpenAI GPT-4 parses resume text into structured data
53
+ 4. **Portfolio Generation**: Creates portfolio record with unique subdomain
54
+ 5. **Response**: Returns generated portfolio data to frontend
55
+
56
+ ### Frontend Components
57
+ - **Home Page**: Landing page with upload zone and portfolio showcase
58
+ - **Portfolio Page**: Dynamic portfolio display with custom theming
59
+ - **Upload Zone**: Drag-and-drop file upload with progress tracking
60
+ - **Portfolio Card**: Preview cards for generated portfolios
61
+
62
+ ## Data Flow
63
+
64
+ 1. **User uploads resume** β†’ File validation and storage
65
+ 2. **Text extraction** β†’ Content parsed from PDF/DOCX/TXT
66
+ 3. **AI processing** β†’ GPT-4 structures resume data
67
+ 4. **Portfolio creation** β†’ Database record with unique subdomain
68
+ 5. **Portfolio display** β†’ Dynamic rendering with custom themes
69
+
70
+ ## External Dependencies
71
+
72
+ ### Core Dependencies
73
+ - **@neondatabase/serverless**: Neon Database connection
74
+ - **drizzle-orm**: Type-safe database operations
75
+ - **openai**: GPT-4 API integration
76
+ - **multer**: File upload handling
77
+ - **pdf-parse**: PDF text extraction
78
+ - **mammoth**: DOCX text extraction
79
+
80
+ ### UI Dependencies
81
+ - **@radix-ui/***: Accessible UI primitives
82
+ - **@tanstack/react-query**: Server state management
83
+ - **tailwindcss**: Utility-first CSS framework
84
+ - **class-variance-authority**: Component variant management
85
+ - **lucide-react**: Icon library
86
+
87
+ ## Deployment Strategy
88
+
89
+ ### Development
90
+ - **Server**: `npm run dev` starts Express server with hot reload
91
+ - **Client**: Vite dev server with HMR
92
+ - **Database**: Drizzle migrations with `npm run db:push`
93
+
94
+ ### Production
95
+ - **Build**: `npm run build` creates optimized client and server bundles
96
+ - **Server**: Compiled to `dist/index.js` with esbuild
97
+ - **Client**: Static files served from `dist/public`
98
+ - **Database**: PostgreSQL with connection pooling
99
+
100
+ ### Environment Variables
101
+ - `DATABASE_URL`: PostgreSQL connection string
102
+ - `OPENAI_API_KEY`: OpenAI API authentication
103
+ - `NODE_ENV`: Environment mode (development/production)
104
+
105
+ ## Note to Investors
106
+
107
+ This project is currently in a prototype stage and relies on the OpenAI API for its core functionality. To fully test and demonstrate the capabilities of this application, access to API credits is essential. We welcome any support in this area to help us move the project forward.
108
+
109
+ ## Changelog
110
+ - July 08, 2025. Initial setup
111
+
112
+ ## User Preferences
113
+
114
+ Preferred communication style: Simple, everyday language.