Skip to content

akingundogdu/rails-project-portfolio-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ Portfolio Application

A modern, full-stack portfolio application built with Ruby on Rails (API) and React (Frontend) with TailwindCSS and Shadcn/UI.

๐Ÿ“‹ Project Overview

This is a professional portfolio application showcasing projects, skills, work experience, and providing a contact form for potential clients and employers. The application is built with modern web technologies and follows best practices for scalability, security, and performance.

Tech Stack

  • Backend: Ruby on Rails 7.1+ (API mode)
  • Frontend: React 18+ + Vite + TypeScript (Coming in Phase 2)
  • Styling: TailwindCSS + Shadcn/UI (Coming in Phase 2)
  • Database: PostgreSQL
  • Authentication: JWT + Devise (Future implementation)
  • File Storage: Active Storage + AWS S3 (Production)
  • Email: ActionMailer with professional templates
  • Testing: RSpec with comprehensive test suite
  • Deployment: Railway/Heroku (Backend) + Vercel (Frontend)

๐ŸŽฏ Current Status: Phase 1 Complete โœ…

โœ… Completed Features (Phase 1: Backend Foundation)

๐Ÿ› ๏ธ Rails API Setup

  • โœ… Rails 7.1+ API with PostgreSQL
  • โœ… Essential gems (rack-cors, devise, jwt, image_processing)
  • โœ… Development and test environment configuration
  • โœ… RSpec testing framework setup
  • โœ… Database connection and configuration

๐Ÿ—„๏ธ Database Models

  • โœ… Project Model: Portfolio projects with validations, scopes, Active Storage
  • โœ… Skill Model: Technical skills with proficiency levels and categories
  • โœ… Experience Model: Work history with duration calculations and validations
  • โœ… ContactMessage Model: Contact form inquiries with priority system
  • โœ… Active Storage: File upload capabilities for project images
  • โœ… Database Indexes: Performance optimized with proper indexing

๐Ÿ›ก๏ธ API Endpoints

  • โœ… Projects API:
    • GET /api/v1/projects - List with filtering, search, pagination
    • GET /api/v1/projects/:id - Detailed project view
  • โœ… Skills API:
    • GET /api/v1/skills - List with category grouping and filtering
  • โœ… Experiences API:
    • GET /api/v1/experiences - Work history with filtering and sorting
  • โœ… Contact Messages API:
    • POST /api/v1/contact_messages - Submit contact form
  • โœ… Health Check: GET /up - Application health monitoring

๐Ÿ“ฎ Email & Notifications

  • โœ… ActionMailer Configuration: Professional email templates
  • โœ… Contact Form Mailer: Admin notifications + auto-reply confirmations
  • โœ… Beautiful Email Templates: HTML and text versions
  • โœ… Background Job Processing: Async email delivery with ActiveJob
  • โœ… SMTP Configuration: Development and production ready

๐Ÿ”ง Backend Configuration

  • โœ… CORS Configuration: Frontend integration ready
  • โœ… Error Handling: Comprehensive error responses with proper HTTP status codes
  • โœ… Validation: Input validation on all models with detailed error messages
  • โœ… Security: Parameter filtering, CORS headers, secure configurations
  • โœ… Environment Variables: Secure configuration management

๐Ÿ—‚๏ธ Project Structure

project-portfolio/
โ”œโ”€โ”€ backend/                 # Rails API (Phase 1 โœ…)
โ”‚   โ”œโ”€โ”€ app/
โ”‚   โ”‚   โ”œโ”€โ”€ controllers/     # API controllers with error handling
โ”‚   โ”‚   โ”œโ”€โ”€ models/          # Data models with validations
โ”‚   โ”‚   โ”œโ”€โ”€ mailers/         # Email notification system
โ”‚   โ”‚   โ”œโ”€โ”€ serializers/     # JSON response formatting
โ”‚   โ”‚   โ””โ”€โ”€ views/           # Email templates
โ”‚   โ”œโ”€โ”€ config/              # Rails configuration
โ”‚   โ”œโ”€โ”€ db/                  # Database migrations and seeds
โ”‚   โ””โ”€โ”€ spec/                # RSpec test suite
โ”œโ”€โ”€ frontend/                # React SPA (Phase 2 - Coming Soon)
โ””โ”€โ”€ PORTFOLIO_ROADMAP.md     # Development roadmap

๐Ÿš€ API Documentation

Base URL

  • Development: http://localhost:3000/api/v1
  • Production: https://your-api-domain.com/api/v1

Available Endpoints

Projects

GET /api/v1/projects

Query Parameters:

  • page - Page number for pagination
  • per_page - Items per page (max 50)
  • status - Filter by status (completed, in_progress, planned)
  • featured - Filter featured projects (true/false)
  • search - Search in title and description
  • sort_by - Sort by (title, created_at, priority, view_count)
GET /api/v1/projects/:id

Returns detailed project information including challenges, learnings, and image galleries.

Skills

GET /api/v1/skills

Query Parameters:

  • category - Filter by category (frontend, backend, database, etc.)
  • featured - Filter featured skills (true/false)
  • grouped - Group by category (true/false)
  • min_proficiency - Filter by minimum proficiency level (1-10)

Experiences

GET /api/v1/experiences

Query Parameters:

  • employment_type - Filter by type (full_time, part_time, contract, etc.)
  • current - Filter current positions (true/false)
  • featured - Filter featured experiences (true/false)
  • technology - Filter by technology used

Contact Messages

POST /api/v1/contact_messages

Request Body:

{
  "contact_message": {
    "name": "John Doe",
    "email": "[email protected]",
    "subject": "Project Inquiry",
    "message": "I'm interested in collaborating...",
    "message_type": "collaboration"
  }
}

๐Ÿ”ง Installation & Setup

Prerequisites

  • Ruby 3.1+
  • Rails 7.1+
  • PostgreSQL 12+
  • Node.js 18+ (for frontend - Phase 2)

Backend Setup

  1. Clone the repository

    git clone https://github.com/akingundogdu/rails-project-portfolio-app.git
    cd rails-project-portfolio-app
  2. Install dependencies

    cd backend
    bundle install
  3. Database setup

    rails db:create
    rails db:migrate
    rails db:seed
  4. Start the server

    rails server
  5. API will be available at http://localhost:3000

Environment Variables

Create a .env file in the backend directory with:

# Database Configuration
DATABASE_HOST=localhost
DATABASE_USERNAME=postgres
DATABASE_PASSWORD=your_password

# Email Configuration
ADMIN_EMAIL=[email protected]
MAILER_FROM_EMAIL=[email protected]
SMTP_ADDRESS=smtp.gmail.com
SMTP_PORT=587
SMTP_USERNAME=[email protected]
SMTP_PASSWORD=your-app-password

# Frontend URL (for CORS and email links)
FRONTEND_URL=http://localhost:3000

๐Ÿงช Testing

Run the comprehensive test suite:

cd backend
bundle exec rspec

๐Ÿ“Š Sample Data

The application comes with rich sample data including:

  • 20+ Skills across 9 categories (Frontend, Backend, Database, DevOps, Design, etc.)
  • 3 Work Experiences with detailed job descriptions and achievements
  • 5 Portfolio Projects with different statuses and comprehensive details
  • 3 Sample Contact Messages with different priorities and types

๐Ÿšง Development Roadmap

โœ… Phase 1: Backend Foundation (COMPLETED)

  • Rails API setup and configuration
  • Database models and migrations
  • API endpoints with filtering and pagination
  • Email notification system
  • Comprehensive testing setup

๐Ÿ”„ Phase 2: Frontend Foundation (In Progress)

  • React + TypeScript + Vite setup
  • TailwindCSS + Shadcn/UI integration
  • API integration and state management
  • Responsive component architecture

๐Ÿ”œ Phase 3: Core Components (Coming Soon)

  • Layout components and navigation
  • Theme system (dark/light mode)
  • Reusable UI components

๐Ÿ”œ Phase 4: Page Development

  • Home page with hero section
  • Projects gallery with filtering
  • About page with skills and experience
  • Contact page with form validation

๐Ÿ”œ Phase 5: Advanced Features

  • Animations and interactions
  • Search and filtering
  • Progressive Web App features

๐Ÿ›ก๏ธ Security Features

  • CORS Configuration: Secure cross-origin resource sharing
  • Input Validation: Comprehensive model and API validation
  • Parameter Filtering: Strong parameter filtering in controllers
  • Error Handling: Secure error responses without sensitive data leakage
  • Environment Variables: Secure configuration management

๐Ÿ“ˆ Performance Features

  • Database Indexing: Optimized database queries
  • Pagination: Efficient data loading with pagination
  • Background Jobs: Async email processing
  • Image Optimization: Active Storage with variant processing
  • Caching: Rails caching configuration

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“ License

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

๐Ÿ“ž Contact

Akin Gundogdu


โญ Star this repository if you find it helpful!

Built with โค๏ธ using Ruby on Rails and React

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published