π A modern, responsive full-stack portfolio website showcasing my skills as a Full Stack Developer. Built with React, Node.js, and Express, featuring a complete email system, smooth animations, responsive design, and a professional presentation of my projects and services.
π Live Demo: fransuelton.dev
π§ Backend API: Production-ready Node.js/Express server with email functionality
- π Full-Stack Portfolio
This is my comprehensive full-stack portfolio developed with React and Node.js, showcasing my expertise in Frontend, Backend, and Full-Stack development. The project features a complete email system with a custom-built API, demonstrating real-world application development skills.
The goal of this portfolio is to demonstrate my technical skills as a full-stack web developer, focusing on:
- Best Practices - Clean code, proper architecture, and industry standards
- Component Architecture - Modular, reusable, and maintainable code structure
- API Development - RESTful services with proper validation and security
- Email Integration - Production-ready email system with confirmation emails
- Security - Input validation, rate limiting, and data sanitization
- Performance - Optimized for speed and user experience
Live Demo: View Portfolio
- π± Responsive Design - Optimized for all devices and screen sizes
- β¨ Smooth Animations - AOS (Animate On Scroll) and custom CSS animations
- π¨ Modern UI/UX - Clean design with intuitive navigation
- β‘ Fast Performance - Built with Vite for optimal loading speeds
- π§© Component Architecture - Modular and reusable React components
- π§ Full Email System - Complete backend with email sending and validation
- π Security Features - Rate limiting, input validation, and CORS protection
- π¬ Email Confirmation - Automatic confirmation emails for users
- π Form Validation - Client and server-side validation
- π Social Integration - Links to professional profiles and repositories
- π οΈ Project Showcase - Interactive project cards with technology stacks
- π CV Download - Easy access to downloadable resume
- π Production Ready - Deployed with proper CI/CD pipeline
This portfolio follows a modern full-stack architecture pattern:
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Frontend βββββΆβ Backend API βββββΆβ Email Service β
β (React/Vite) β β (Node.js/ β β (Nodemailer) β
β β β Express) β β β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Static Hosting β β Server Hosting β β SMTP Provider β
β (Vercel) β β (Railway/ β β (Gmail/Custom) β
β β β Heroku) β β β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
Key Components:
- Frontend: React SPA with responsive design and animations
- Backend API: Express server with RESTful endpoints
- Email System: Nodemailer integration with HTML templates
- Validation Layer: Client and server-side data validation
- Security Layer: Rate limiting, CORS, and input sanitization
- React 18.2.0 - Modern React with hooks and functional components
- Vite 7.0.3 - Fast build tool and development server
- Styled Components 6.0.7 - CSS-in-JS styling solution
- Node.js 18+ - JavaScript runtime for server-side development
- Express 5.1.0 - Fast, unopinionated web framework
- CORS 2.8.5 - Cross-Origin Resource Sharing middleware
- Helmet 8.1.0 - Security middleware for Express apps
- Nodemailer 7.0.5 - Email sending library with SMTP support
- HTML Email Templates - Professional email design with inline CSS
- SMTP Integration - Support for Gmail, Hostinger, and custom providers
- Email Confirmation - Automatic confirmation emails for users
- Express Rate Limit 7.5.1 - Rate limiting middleware
- Express Validator 7.2.1 - Server-side validation and sanitization
- Helmet - Security headers and protection
- Input Sanitization - XSS and injection protection
- FontAwesome - Professional icons for branding and navigation
- React Icons - Technology stack icons and social media icons
- Lucide React - Modern service icons
- AOS (Animate On Scroll) 3.0.0 - Scroll-triggered animations
- Custom CSS Animations - Typewriter effect and smooth transitions
- ESLint - Code linting and formatting
- Concurrently - Run multiple commands simultaneously
- dotenv - Environment variable management
- TypeScript Types - Type definitions for better development experience
| Main Section (Mobile) | Projects Section (Desktop) |
|---|---|
![]() |
![]() |
- Node.js >= 18.x
- npm or yarn
- Git
- Email Provider (Gmail, Hostinger, or custom SMTP)
# Clone the repository
git clone https://github.com/Fransuelton/meu-portfolio.git
# Navigate to the project folder
cd meu-portfolio
# Install frontend dependencies
npm install
# Install backend dependencies
cd backend
npm install
cd ..Create a .env file in the backend directory with the following variables:
# Server Configuration
PORT=3000
NODE_ENV=development
# CORS Configuration
CORS_ORIGIN=http://localhost:5173
# Email Configuration
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER=your-email@gmail.com
EMAIL_PASS=your-app-password
EMAIL_FROM=your-email@gmail.com
EMAIL_TO=your-email@gmail.com
# For Gmail: Use App Password instead of regular password
# For Hostinger: Use your hosting email credentials
# EMAIL_HOST=smtp.hostinger.com
# EMAIL_PORT=465Email Setup Instructions:
For Gmail:
- Enable 2-Factor Authentication
- Generate an App Password: Google App Passwords
- Use the App Password in
EMAIL_PASS
For Hostinger or Custom SMTP:
- Use your hosting provider's SMTP settings
- Update
EMAIL_HOSTandEMAIL_PORTaccordingly
# Run both frontend and backend simultaneously
npm run dev:full
# Or run them separately:
# Terminal 1 - Frontend (http://localhost:5173)
npm run dev
# Terminal 2 - Backend (http://localhost:3000)
npm run dev:backend
# Test email configuration
npm run test:emailAvailable Scripts:
npm run dev- Start frontend development servernpm run dev:backend- Start backend API servernpm run dev:full- Start both frontend and backendnpm run build- Build frontend for productionnpm run preview- Preview production buildnpm run test:email- Test email configuration
The backend provides the following RESTful API endpoints:
POST /api/contact
Send a contact form email with automatic confirmation.
Request Body:
{
"name": "John Doe",
"email": "john@example.com",
"message": "Hello, I would like to discuss a project..."
}Response:
{
"success": true,
"message": "Email sent successfully! I'll get back to you soon.",
"data": {
"messageId": "<message-id@smtp.server>"
}
}Features:
- β Input validation and sanitization
- β Rate limiting (5 requests per 15 minutes)
- β Automatic confirmation email to sender
- β HTML email templates
- β XSS protection
GET /api/email/test
Test email configuration and connectivity.
Response:
{
"success": true,
"message": "Email configuration is working correctly!"
}Error Handling: All endpoints return consistent error responses:
{
"success": false,
"message": "Error description",
"errors": [/* validation errors if applicable */]
}- Dynamic Introduction - Animated name and role with typewriter effect
- Professional Branding - Clean, centered layout with smooth animations
- Professional Summary - Comprehensive overview of skills and experience
- CV Download - Direct access to downloadable resume
- Profile Image - Professional photo with hover effects
- Web Development - Frontend and responsive design services
- API Development - Backend and RESTful API creation
- Maintenance & Optimization - Code refactoring and performance improvements
- Featured Projects - Showcase of top development projects
- Technology Stack - Visual representation of technologies used
- Live Demos - Direct links to project deployments and repositories
- Project Cards - Interactive cards with hover effects
- DevLinks - Customizable link tree built with Vue.js + TypeScript
- AuthJS - Complete authentication system with Node.js and JWT
- User Profile System - Full-stack application with Laravel and Vue.js
- Contact Form - Professional inquiry form with backend integration
- Real-time Validation - Client and server-side form validation
- Email Confirmation - Automatic confirmation emails for users
- Rate Limiting - Protection against spam and abuse
- Social Links - Direct access to professional profiles
- Email Integration - One-click email copying functionality
- Multi-channel Communication - LinkedIn, GitHub, and WhatsApp integration
- Copyright Information - Professional copyright notice
- Back to Top - Quick navigation to page top
meu-portfolio/
βββ frontend/
β βββ public/
β β βββ favicon.ico
β β βββ logo.svg
β βββ src/
β β βββ assets/
β β β βββ images/
β β β βββ cover-authjs.webp
β β βββ components/
β β β βββ index.jsx # Component exports
β β β βββ layout/
β β β βββ about/
β β β β βββ index.jsx # About section
β β β βββ contact/
β β β β βββ index.jsx # Contact section
β β β β βββ ContactForm/
β β β β βββ index.jsx # Contact form component
β β β βββ footer/
β β β β βββ index.jsx # Footer component
β β β βββ header/
β β β β βββ index.jsx # Navigation header
β β β βββ main/
β β β β βββ index.jsx # Hero section
β β β βββ projects/
β β β β βββ index.jsx # Projects showcase
β β β β βββ projectCard.jsx # Project card component
β β β βββ services/
β β β βββ index.jsx # Services section
β β βββ App.jsx # Main app component
β β βββ main.jsx # React entry point
β βββ index.html # HTML template
β βββ package.json # Frontend dependencies
β βββ vite.config.js # Vite configuration
βββ backend/
β βββ middleware/
β β βββ validation.js # Input validation & sanitization
β βββ services/
β β βββ emailService.js # Email sending service
β βββ index.js # Express server entry point
β βββ package.json # Backend dependencies
β βββ .env # Environment variables
βββ package.json # Root package.json with scripts
βββ .eslintrc.cjs # ESLint configuration
βββ LICENSE # MIT License
βββ README.md # Project documentation
Architecture Highlights:
- Separation of Concerns - Clear separation between frontend and backend
- Modular Components - Reusable React components with single responsibilities
- Service Layer - Dedicated services for email functionality
- Middleware - Validation, security, and error handling layers
- Environment Configuration - Secure environment variable management
This portfolio implements comprehensive security measures:
- Helmet - Sets various HTTP headers to secure the app
- CORS - Configurable Cross-Origin Resource Sharing
- Rate Limiting - Prevents abuse and spam (5 requests per 15 minutes)
- Input Validation - Server-side validation using express-validator
- Data Sanitization - XSS protection and input cleaning
- Environment Variables - Sensitive data protection
- SMTP Authentication - Secure email provider authentication
- TLS/SSL Encryption - Encrypted email transmission
- Input Sanitization - Email content XSS protection
- Rate Limiting - Email sending rate limits
- Content Security Policy - Protection against XSS attacks
- Form Validation - Client-side input validation
- Secure Headers - Security headers set by Helmet middleware
Test the email functionality:
# Test email configuration
npm run test:email
# Manual API testing with curl
curl -X GET http://localhost:3000/api/email/test
# Test contact form endpoint
curl -X POST http://localhost:3000/api/contact \
-H "Content-Type: application/json" \
-d '{
"name": "Test User",
"email": "test@example.com",
"message": "This is a test message from the API"
}'# Lint frontend code
npm run lint
# Build and test production version
npm run build
npm run preview# Test rate limiting (should block after 5 requests)
for i in {1..6}; do
curl -X POST http://localhost:3000/api/contact \
-H "Content-Type: application/json" \
-d '{"name":"Test","email":"test@example.com","message":"Test message"}'
echo "Request $i completed"
doneContributions are welcome! If you have suggestions for improvements or find any issues, feel free to contribute.
# Fork the repository on GitHub
# Clone your fork
git clone https://github.com/your-username/meu-portfolio.git
# Create a new branch for your feature
git checkout -b feature/amazing-feature
# Make your changes and commit them
git commit -m "feat: add amazing feature"
# Push to your fork
git push origin feature/amazing-feature
# Open a Pull Request on GitHub- Code Style - Follow the existing code style and conventions
- Commit Messages - Use conventional commits (feat:, fix:, docs:, etc.)
- Testing - Test your changes thoroughly before submitting
- Documentation - Update documentation when necessary
- Security - Follow security best practices
- Environment - Test in both development and production environments
- Email Testing - Test email functionality with real SMTP providers
- API Testing - Verify API endpoints with proper error handling
- Responsive Design - Ensure changes work across all device sizes
- Performance - Consider performance impact of changes
- Accessibility - Maintain accessibility standards
This project is licensed under the MIT License. See the LICENSE file for details.
Fransuelton Francisco
Full Stack Developer
οΏ½ Email: contato@fransuelton.dev
π Portfolio: fransuelton.dev
π GitHub: github.com/Fransuelton
πΌ LinkedIn: linkedin.com/in/fransuelton
β Star this repository if you found it helpful!
Built with β€οΈ and β by Fransuelton Francisco
This portfolio demonstrates real-world full-stack development skills including React frontend, Node.js backend, email integration, security implementation, and production deployment.

