Skip to content

Arbelaezch/Personal-Website

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

557 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Overview

A professional portfolio website built with Django, showcasing my projects and development experience. The application is hosted on a personal Linux server, utilizing Gunicorn as the application server and Nginx for handling web requests. Static files are efficiently managed and served through WhiteNoise, while MySQL powers both development and production databases to maintain strong dev/prod parity.

Technologies & Skills Developed

Through the development and continuous improvement of this portfolio since 2020, I've gained extensive experience in:

Core Technologies

  • Django (Python web framework)
  • MySQL database management
  • Nginx web server
  • Gunicorn application server
  • HTML/CSS/JavaScript
  • Responsive Design

DevOps & Infrastructure

  • Linux server administration
  • SSL certificate management
  • DNS configuration
  • Automated CI/CD pipeline with GitHub Actions
    • Automated testing
    • Separate development (:8080) and production environments
    • Branch-based deployments
  • Environment management
  • Security best practices

Additional Experience

  • Docker containerization
  • Serverless architectures (Google Cloud Run, AWS Lambda)
  • Cloud platforms (Azure App Service, AWS EC2, Digital Ocean)
  • Static content delivery (Firebase Storage, AWS S3)

Local Development Setup

Prerequisites

  • Python 3.8+
  • MySQL
  • Git

Initial Setup

  1. Clone the repository:

    git clone <repository-url>
    cd website
  2. Create and activate virtual environment:

    python -m venv env
    source env/bin/activate  # On Windows: .\env\Scripts\activate
  3. Install dependencies:

    pip install -r requirements.txt
  4. Configure environment variables:

    • Create ~/website/website/.env file
    • Copy contents from .env.example
    • Update values for your local environment
  5. Database setup:

    python manage.py migrate
    python manage.py createsuperuser

Running the Development Server

python manage.py runserver

The site will be available at http://localhost:8000

Development Workflow

The project follows a structured development workflow:

  1. Create feature branches from development
  2. Push changes to trigger automated tests
  3. Changes to development branch deploy to development environment (:8080)
  4. Create PR from development to main for production deployment
  5. Merged changes automatically deploy to production

Future Considerations

While the current implementation effectively serves its purpose, there are several potential areas for enhancement:

  • Integration of modern CSS frameworks (Sass/Tailwind)
  • Migration to a React/Vite frontend
  • Additional interactive features
  • Enhanced monitoring and logging

However, the focus remains on maintaining a stable, performant platform while directing development efforts toward new projects and learning opportunities.

Contact

I welcome discussions about software development and appreciate constructive feedback. Feel free to reach out:

About

The code for my website, ChristianDonovan.ca.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors