System Architecture
The André Ruperto Portfolio is a full-stack web application built with a modern tech stack:Request Flow
1. Page Load Flow
2. Contact Form Submission Flow
3. Admin Authentication Flow
Technology Stack
- Frontend
- Backend
- Database
- DevOps
- Framework: React 18.3.1 with TypeScript
- Build Tool: Vite 5.4.19
- Routing: React Router DOM 6.30.1
- State Management: Tanstack Query 5.83.0
- Forms: React Hook Form 7.61.1 + Zod 3.25.76
- UI Components: Radix UI primitives
- Styling: TailwindCSS 3.4.17 + class-variance-authority
- Icons: Lucide React 0.462.0
- Notifications: Sonner 1.7.4
Environment Configuration
The application uses different.env files based on NODE_ENV:
Required Environment Variables
DATABASE_URL- PostgreSQL connection stringRESEND_API_KEY- Email service API keyADMIN_PASSWORD- Admin authentication passwordJWT_SECRET- Token signing secretPORT- Backend server port (default: 3001)VITE_API_URL- API endpoint for frontend (default: /api)
Development vs Production
Security Features
-
Rate Limiting
- Login: 5 attempts per 15 minutes
- Contact form: 5 submissions per hour
-
Input Validation
- Email format validation
- Field length limits (name: 100, subject: 200, message: 5000)
- HTML escaping for email templates
-
Authentication
- JWT tokens with 24-hour expiry
- Authorization header or query token support
- Password-based admin access
-
CORS
- Configured for cross-origin requests
- JSON body size limit: 1MB
File Structure
Next Steps
Frontend Architecture
Learn about React components, routing, and state management
Backend Architecture
Explore Express routes, middleware, and API endpoints
Database Schema
Understand Prisma models and database structure
API Reference
View complete API endpoint documentation
