Loading...
Loading...
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
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 productionThis is a personal portfolio website for Daley Mottley, an AI Consultant and Full-Stack Web Developer based in Barbados. The site showcases professional skills, projects, and services with a focus on AI solutions and web development. The portfolio includes internationalization support for multiple languages and features an interactive typewriter animation in the contact form.
**Mission**: ContractSpec is the deterministic, spec-first compiler that keeps AI-written software coherent, safe, and regenerable.
This is a multiplayer scrum poker game with a retro JRPG aesthetic that gamifies story point estimation. Players create or join lobbies, select fantasy avatar classes (warrior, wizard, etc.), and estimate Jira tickets by "battling" pixel art bosses. The game combines traditional scrum poker mechanics with engaging visual elements and real-time multiplayer interactions.
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.