Skip to content

Fransuelton/my-portfolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

76 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Full-Stack Portfolio

GitHub last commit GitHub repo size GitHub issues GitHub pull requests GitHub License GitHub stars

Project Status Project Type Backend Status Frontend Status

πŸ“Œ 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


πŸ“š Table of Contents


πŸ“ About

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


✨ Features

  • πŸ“± 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

πŸ—οΈ Architecture (REVISAR)

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

🧰 Tech Stack

πŸ“¦ Core Technologies

Tech Stack

Frontend

  • 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

Backend

  • 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

Email System

  • 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

Security & Validation

  • 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

UI & Icons

  • FontAwesome - Professional icons for branding and navigation
  • React Icons - Technology stack icons and social media icons
  • Lucide React - Modern service icons

Animation & Effects

  • AOS (Animate On Scroll) 3.0.0 - Scroll-triggered animations
  • Custom CSS Animations - Typewriter effect and smooth transitions

Development Tools

  • ESLint - Code linting and formatting
  • Concurrently - Run multiple commands simultaneously
  • dotenv - Environment variable management
  • TypeScript Types - Type definitions for better development experience

πŸ–ΌοΈ Screenshots

Main Section (Mobile) Projects Section (Desktop)
Main Section (Mobile) Projects Section (Desktop) Screenshot

πŸš€ Getting Started

πŸ“‹ Prerequisites

  • Node.js >= 18.x
  • npm or yarn
  • Git
  • Email Provider (Gmail, Hostinger, or custom SMTP)

πŸ”§ Installation

# 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 ..

βš™οΈ Environment Configuration

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=465

Email Setup Instructions:

For Gmail:

  1. Enable 2-Factor Authentication
  2. Generate an App Password: Google App Passwords
  3. Use the App Password in EMAIL_PASS

For Hostinger or Custom SMTP:

  1. Use your hosting provider's SMTP settings
  2. Update EMAIL_HOST and EMAIL_PORT accordingly

πŸƒβ€β™‚οΈ Running the Application

# 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:email

Available Scripts:

  • npm run dev - Start frontend development server
  • npm run dev:backend - Start backend API server
  • npm run dev:full - Start both frontend and backend
  • npm run build - Build frontend for production
  • npm run preview - Preview production build
  • npm run test:email - Test email configuration

πŸ“‘ API Endpoints

The backend provides the following RESTful API endpoints:

Contact Email API

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

Email Test API

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 */]
}

πŸ“‘ Sections

🎯 Hero Section

  • Dynamic Introduction - Animated name and role with typewriter effect
  • Professional Branding - Clean, centered layout with smooth animations

πŸ‘¨β€πŸ’» About Section

  • Professional Summary - Comprehensive overview of skills and experience
  • CV Download - Direct access to downloadable resume
  • Profile Image - Professional photo with hover effects

πŸ› οΈ Services Section

  • Web Development - Frontend and responsive design services
  • API Development - Backend and RESTful API creation
  • Maintenance & Optimization - Code refactoring and performance improvements

πŸ’Ό Projects Section

  • 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

Featured Projects:

  1. DevLinks - Customizable link tree built with Vue.js + TypeScript
  2. AuthJS - Complete authentication system with Node.js and JWT
  3. User Profile System - Full-stack application with Laravel and Vue.js

πŸ“ž Contact Section

  • 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

πŸ”— Footer

  • Copyright Information - Professional copyright notice
  • Back to Top - Quick navigation to page top

πŸ“ Project Structure

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

πŸ”’ Security Features

This portfolio implements comprehensive security measures:

Backend Security

  • 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

Email Security

  • SMTP Authentication - Secure email provider authentication
  • TLS/SSL Encryption - Encrypted email transmission
  • Input Sanitization - Email content XSS protection
  • Rate Limiting - Email sending rate limits

Frontend Security

  • Content Security Policy - Protection against XSS attacks
  • Form Validation - Client-side input validation
  • Secure Headers - Security headers set by Helmet middleware

πŸ§ͺ Testing

Email System Testing

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"
  }'

Frontend Testing

# Lint frontend code
npm run lint

# Build and test production version
npm run build
npm run preview

Rate Limiting Testing

# 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"
done

🀝 Contributing

Contributions are welcome! If you have suggestions for improvements or find any issues, feel free to contribute.

How 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

Development Guidelines

  • 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

πŸ“„ License

This project is licensed under the MIT License. See the LICENSE file for details.


πŸ“¬ Contact

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.

About

A modern and responsive personal portfolio built with React, Vite, and Styled Components. Showcasing my main projects, services, and skills as a Full Stack Developer with a focus on performance, clean design, and best coding practices.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors