Resume Share - Version-Controlled Resume Sharing Platform
This is a modern, responsive web application for sharing and version-controlling PDF resumes. Users can upload multiple versions of their resumes, generate shareable public links, and track usage statistics. The app is built with React frontend, Express.js backend, and uses PostgreSQL with Drizzle ORM for data persistence.
Resume Share - Version-Controlled Resume Sharing Platform
Overview
This is a modern, responsive web application for sharing and version-controlling PDF resumes. Users can upload multiple versions of their resumes, generate shareable public links, and track usage statistics. The app is built with React frontend, Express.js backend, and uses PostgreSQL with Drizzle ORM for data persistence.
System Architecture
Frontend Architecture
- Framework: React with TypeScript
- UI Library: shadcn/ui components with Radix UI primitives
- Styling: Tailwind CSS with CSS variables for theming
- State Management: TanStack Query for server state management
- Routing: Wouter for lightweight client-side routing
- Form Handling: React Hook Form with Zod validation
- Build Tool: Vite with hot module replacement
Backend Architecture
- Runtime: Node.js with Express.js framework
- Language: TypeScript with ES modules
- File Uploads: Multer middleware for handling PDF files
- Database: PostgreSQL with Drizzle ORM
- Session Management: Express sessions with PostgreSQL store
- Deployment: Optimized for Replit with autoscale deployment
Key Components
Database Schema
The application uses three main tables:
- resumes: Stores resume metadata (name, short URL, timestamps)
- resume_versions: Tracks multiple versions of each resume with file information
- resume_views: Analytics tracking for public resume views
File Storage
- Files are stored locally in the
uploads/directory - PDF validation ensures only PDF files are accepted
- 10MB file size limit for uploads
- File naming includes version numbers for organization
URL Generation
- Short URLs are generated using 6-character random strings
- Pattern:
/r/{shortUrl}for public resume viewing - URLs are guaranteed to be unique through database constraints
Data Flow
Upload Process
- User selects PDF file and provides resume name
- File validation occurs (PDF type, size limits)
- File is saved to local storage with unique filename
- Database records are created for resume and version
- Short URL is generated and returned to user
Public Viewing
- User visits
/r/{shortUrl}public link - System looks up resume by short URL
- Latest version is retrieved from database
- PDF file is served with download option
- View analytics are recorded (IP, user agent, timestamp)
Version Management
- Users can upload new versions to existing resumes
- Previous versions remain accessible through version history
- Latest version is automatically marked and served publicly
- Users can promote any version to be the current latest
External Dependencies
Core Dependencies
- @neondatabase/serverless: PostgreSQL database driver
- drizzle-orm: Type-safe ORM for database operations
- multer: File upload handling middleware
- express: Web application framework
- react: Frontend framework
- @tanstack/react-query: Server state management
UI Components
- @radix-ui/*: Accessible UI primitive components
- tailwindcss: Utility-first CSS framework
- class-variance-authority: Component variant styling
- react-hook-form: Form handling and validation
Development Tools
- vite: Build tool and development server
- typescript: Type safety and development experience
- drizzle-kit: Database migration and schema management
Deployment Strategy
Development Environment
- Replit Integration: Configured for Replit development environment
- Hot Reload: Vite provides instant updates during development
- Database: PostgreSQL 16 module enabled in Replit
- Port Configuration: Application runs on port 5000
Production Build
- Build Process: Vite builds frontend assets, esbuild bundles backend
- Asset Optimization: Static assets are optimized and served efficiently
- Environment Variables: DATABASE_URL required for PostgreSQL connection
- Autoscale Deployment: Configured for Replit's autoscale infrastructure
File Organization
├── client/ # React frontend application
├── server/ # Express.js backend application
├── shared/ # Shared TypeScript types and schemas
├── uploads/ # Local file storage for PDFs
└── migrations/ # Database migration files
Recent Changes
- June 24, 2025: Created beautiful modern landing page with professional design
- June 24, 2025: Implemented Google authentication using Replit Auth
- June 24, 2025: Set up PostgreSQL database with user management
- June 24, 2025: Added protected dashboard with user-specific resume management
- June 24, 2025: Created comprehensive local setup and Vercel deployment guide
Changelog
- June 24, 2025. Initial setup with resume sharing and version control
User Preferences
Preferred communication style: Simple, everyday language. UI Requirements: Professional PDF viewer with zoom controls and responsive design. Deployment: Interested in local development setup and Vercel deployment.
Local Development & Deployment
- Complete setup guide created in LOCAL_SETUP.md
- Vercel configuration files prepared
- Environment variable templates provided
- Database setup instructions for both local and production
Related Documents
GOOBY - Closing Store Marketplace
A marketplace platform for discovering and purchasing inventory from closing retail stores, focused on the NY, NJ, CT, and PA areas.
Lua Code Obfuscator/Deobfuscator
This is a full-stack web application that provides Lua code obfuscation and deobfuscation services specifically designed for Roblox scripts. The application features a professional Monaco code editor with dual-pane interface, comprehensive obfuscation settings, and file upload/download functionality. Built with a modern React frontend and Node.js/Express backend.
GREEN NODE - Project Overview
Full-stack recycling platform connecting waste generators with verified collectors in Cochabamba, Bolivia.
ADN Systems DMR Peer Server
ADN Systems DMR Peer Server is a fork of FreeDMR, implementing a Digital Mobile Radio (DMR) network server. Launched in April 2024 by international amateur radio enthusiasts, it operates on an Open Bridge Protocol (OBP) fostering a decentralized network architecture. The system handles DMR voice and data communication, acting as a conference bridge/reflector that routes traffic between connected systems (repeaters, hotspots, peers) based on configurable bridge rules.