A modern, scalable blog application built with Django, featuring user authentication, social logins, and serverless deployment on AWS Lambda.
- User Management: Registration, login, and profile management with Django Allauth
- Social Authentication: Login with Google and GitHub
- Blog CRUD: Create, read, update, and delete blog posts with rich text support
- Comments & Likes: Interactive commenting system with like functionality
- Tagging System: Organize posts with tags for easy discovery
- Responsive Design: Mobile-first UI using Bootstrap 5
- Security: Input sanitization, CSRF protection, and secure password handling
- Serverless Deployment: AWS Lambda with API Gateway for scalable hosting
Check out the live version of YoshiBlog: https://k5tb26hid6.execute-api.us-east-1.amazonaws.com/
- Backend: Django 5.1, Python 3.11
- Database: PostgreSQL (hosted on Neon)
- Frontend: HTML5, CSS3, Bootstrap 5, JavaScript (jQuery)
- Authentication: Django Allauth with social providers
- Deployment: AWS SAM, Lambda, API Gateway, S3
- Containerization: Docker
- Other: boto3 (AWS SDK), nh3 (HTML sanitization)
YoshiBlog follows a serverless architecture for high scalability and low maintenance:
- Frontend: Static files served from S3
- Backend: Django app running on AWS Lambda
- Database: Managed PostgreSQL instance
- API: RESTful endpoints via API Gateway
- Security: Secrets managed in AWS SSM Parameter Store
- Python 3.11+
- Docker
- AWS CLI configured
- PostgreSQL database (e.g., Neon)
-
Clone the repository:
git clone git@github.com:Frederick-Teye/YoshiBlog.git cd yoshiblog -
Create virtual environment:
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Set environment variables:
export DJANGO_ENV=local export DATABASE_URL=your_postgres_url export SECRET_KEY=your_secret_key # Add other vars as needed
-
Run migrations:
python manage.py migrate
-
Collect static files:
python manage.py collectstatic
-
Start development server:
python manage.py runserver
Visit http://127.0.0.1:8000/ to view the application.
- Install AWS SAM CLI
- Configure AWS credentials
- Build and deploy:
sam build sam deploy --guided
The app will be deployed to AWS Lambda with API Gateway endpoints.
Set the following in AWS SSM Parameter Store:
/yoshiblog/secret_key/yoshiblog/database_url/yoshiblog/admin_email/yoshiblog/admin_password- Social auth credentials
- Home: Browse latest blog posts
- Create Blog: Authenticated users can write and publish posts
- Tags: Filter posts by tags
- Comments: Engage with posts through comments and likes
- Admin Panel: Manage users and content at
/admin/
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Commit changes:
git commit -am 'Add feature' - Push to branch:
git push origin feature-name - Submit a pull request
I'm a Computer Science student with over 3 years of programming experience, specializing in web development and cloud technologies. I completed the AWS Cloud Practitioner (CCP) training through AmaliTech and hold the certification. Currently preparing for the AWS Developer Associate exam, I built YoshiBlog to demonstrate practical skills in full-stack development, serverless architecture, and DevOps practices.
Connect with me on LinkedIn or check out my other projects!