Back to .md Directory

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.

May 2, 2026
0 downloads
0 views
ai agent rag
View source

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

  1. User selects PDF file and provides resume name
  2. File validation occurs (PDF type, size limits)
  3. File is saved to local storage with unique filename
  4. Database records are created for resume and version
  5. Short URL is generated and returned to user

Public Viewing

  1. User visits /r/{shortUrl} public link
  2. System looks up resume by short URL
  3. Latest version is retrieved from database
  4. PDF file is served with download option
  5. View analytics are recorded (IP, user agent, timestamp)

Version Management

  1. Users can upload new versions to existing resumes
  2. Previous versions remain accessible through version history
  3. Latest version is automatically marked and served publicly
  4. 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