Skip to content

logicbyroshan/personal-portfolio-basic

Repository files navigation

Portfolio Cover

🌟 DevSathi — Personal Portfolio Basic

A modern, fully responsive portfolio website built with Django featuring dynamic content management, interactive UI, and a comprehensive admin dashboard.


📱 Screenshots

Hero Section

Hero Section

Projects Section

Contact Section

Skills Section

Blogs Section

Contact Section

Skills Section


✨ Features

🎨 Frontend Features

  • Fully Responsive Design - Mobile-first approach with modern UI/UX
  • Interactive Animations - Smooth transitions and hover effects
  • Modern Glassmorphism UI - Contemporary design with depth and blur effects
  • Mobile Navigation - Hamburger menu with overlay system
  • Dynamic Content - Real-time content updates without page refresh
  • Touch Optimized - Enhanced touch interactions for mobile devices

🔧 Backend Features

  • Django 5.2.5 Framework - Latest Django with enhanced security
  • MySQL Database - Robust relational database management
  • Admin Dashboard - Comprehensive content management system
  • REST API - Django REST Framework integration
  • Email Integration - Contact form with SMTP functionality
  • File Upload System - Resume, images, and document management

🛡️ Security Features

  • Environment Variables - Secure credential management with python-dotenv
  • HTTPS Enforcement - SSL/TLS configuration for production
  • CSRF Protection - Cross-site request forgery protection
  • XSS Prevention - Cross-site scripting security measures
  • Secure Headers - Security headers for enhanced protection
  • Input Validation - Comprehensive form validation and sanitization

📊 Content Management

  • Dynamic Projects - Showcase projects with images, descriptions, and links
  • Blog System - Full-featured blog with categories and rich text editor
  • Skills Management - Interactive skills display with proficiency levels
  • Experience Timeline - Professional experience with company details
  • FAQ Section - Expandable FAQ system with categories
  • Resume Management - PDF upload and display functionality

🚀 Installation & Setup

Prerequisites

- Python 3.8 or higher
- pip (Python package installer)
- MySQL 8.0 or higher
- Git

1. Clone Repository

git clone https://github.com/logicbyroshan/portfolio-v1.0.git
cd portfolio-v1.0

2. Create Virtual Environment

# Windows
python -m venv venv
venv\Scripts\activate

# macOS/Linux
python3 -m venv venv
source venv/bin/activate

3. Install Dependencies

pip install -r requirements.txt

4. Environment Configuration

# Copy environment template
cp .env.example .env

# Generate secure secret key
python generate_secret_key.py

# Edit .env file with your configurations

5. Database Setup

# Create MySQL database
mysql -u root -p
CREATE DATABASE portfolio_db;
CREATE USER 'portfolio_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON portfolio_db.* TO 'portfolio_user'@'localhost';
FLUSH PRIVILEGES;

# Run migrations
python manage.py migrate

# Create superuser (optional)
python manage.py createsuperuser

6. Collect Static Files

python manage.py collectstatic

7. Run Development Server

python manage.py runserver

Visit http://127.0.0.1:8000/ in your browser.


📁 Project Structure

portfolio-v1.0/
├── 📁 myportfolio/                 # Django project settings
│   ├── __init__.py
│   ├── asgi.py                     # ASGI configuration
│   ├── settings.py                 # Django settings (production-ready)
│   ├── urls.py                     # Main URL configuration
│   └── wsgi.py                     # WSGI configuration
├── 📁 app/                         # Main Django application
│   ├── 📁 migrations/              # Database migrations
│   │   ├── 0001_initial.py
│   │   ├── 0002_remove_project_features...
│   │   └── ...
│   ├── 📁 static/                  # Static files (CSS, JS, Images)
│   │   ├── 📁 css/
│   │   │   ├── style.css           # Main stylesheet
│   │   │   ├── index.css           # Homepage styles
│   │   │   ├── blogs.css           # Blog-specific styles
│   │   │   └── ...
│   │   ├── 📁 js/
│   │   │   ├── index.js            # Main JavaScript functionality
│   │   │   └── contact.js          # Contact form handling
│   │   └── 📁 images/              # Static images
│   │       ├── 📁 icons/
│   │       ├── 📁 others/
│   │       └── 📁 stock/
│   ├── 📁 templates/               # HTML templates
│   │   ├── portfolio-base.html     # Base template
│   │   ├── portfolio-landing-page.html  # Homepage
│   │   ├── blogs.html              # Blog listing
│   │   ├── blog-detail.html        # Blog detail page
│   │   ├── projects.html           # Projects showcase
│   │   ├── project-detail.html     # Project detail page
│   │   ├── skills.html             # Skills page
│   │   ├── experiences.html        # Experience timeline
│   │   ├── faqs.html              # FAQ page
│   │   └── filters.html           # Reusable filter component
│   ├── admin.py                    # Django admin configuration
│   ├── apps.py                     # App configuration
│   ├── context_processors.py       # Template context processors
│   ├── forms.py                    # Django forms
│   ├── models.py                   # Database models
│   ├── urls.py                     # App URL patterns
│   └── views.py                    # View functions
├── 📁 media/                       # User uploaded files
│   ├── 📁 blogs/                   # Blog images
│   ├── 📁 projects/                # Project images
│   │   ├── 📁 images/
│   │   └── 📁 features/
│   ├── 📁 skills/                  # Skill icons & certificates
│   │   ├── 📁 icons/
│   │   └── 📁 certificates/
│   ├── 📁 experience/              # Company logos
│   └── 📁 resumes/                 # Resume PDFs
├── 📁 staticfiles/                 # Collected static files (production)
├── 📁 stock-images/                # Demo screenshots & assets
│   ├── Portfolio Thumb.jpg         # Cover image
│   ├── heross.png                  # Hero section screenshot
│   ├── skillss.png                 # Skills section screenshot
│   ├── blogsss.png                 # Blog page screenshot
│   └── contactss.png               # Contact form screenshot
├── 📁 logs/                        # Application logs
│   └── .gitkeep
├── 📄 manage.py                    # Django management script
├── 📄 requirements.txt             # Python dependencies
├── 📄 .env.example                 # Environment variables template
├── 📄 .gitignore                   # Git ignore rules
├── 📄 generate_secret_key.py       # Secret key generator utility
├── 📄 DEPLOYMENT.md                # Deployment instructions
└── 📄 README.md                    # Project documentation

🔧 Configuration

Environment Variables (.env)

# Django Configuration
SECRET_KEY=your-secure-secret-key-here
DEBUG=False
ALLOWED_HOSTS=portfoliov1.roshanproject.site,www.roshanproject.site

# Database Configuration
DB_NAME=portfolio_db
DB_USER=portfolio_user
DB_PASSWORD=your_secure_password
DB_HOST=localhost
DB_PORT=3306

# Email Configuration
EMAIL_HOST=smtp.yourdomain.com
EMAIL_PORT=465
EMAIL_USE_SSL=True
EMAIL_HOST_USER=contact@yourdomain.com
EMAIL_HOST_PASSWORD=your_email_password
DEFAULT_FROM_EMAIL=contact@yourdomain.com

# Security Settings
SECURE_SSL_REDIRECT=True
SESSION_COOKIE_SECURE=True
CSRF_COOKIE_SECURE=True

📜 License

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

About

DevSathi — A minimalist full-stack developer portfolio crafted to present projects, skills, and achievements clearly.

Topics

Resources

Stars

Watchers

Forks