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.
Through the development and continuous improvement of this portfolio since 2020, I've gained extensive experience in:
- Django (Python web framework)
- MySQL database management
- Nginx web server
- Gunicorn application server
- HTML/CSS/JavaScript
- Responsive Design
- 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
- 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)
- Python 3.8+
- MySQL
- Git
-
Clone the repository:
git clone <repository-url> cd website
-
Create and activate virtual environment:
python -m venv env source env/bin/activate # On Windows: .\env\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Configure environment variables:
- Create
~/website/website/.envfile - Copy contents from
.env.example - Update values for your local environment
- Create
-
Database setup:
python manage.py migrate python manage.py createsuperuser
python manage.py runserverThe site will be available at http://localhost:8000
The project follows a structured development workflow:
- Create feature branches from development
- Push changes to trigger automated tests
- Changes to development branch deploy to development environment (:8080)
- Create PR from development to main for production deployment
- Merged changes automatically deploy to production
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.
I welcome discussions about software development and appreciate constructive feedback. Feel free to reach out:
- Email: arbelaezch@gmail.com
- Website: ChristianDonovan.ca