Social Network

I developed a production ready proof-of-concept social networking app designed to raise awareness about food waste.

Context

Root To Root is a social media which purpose is to allow users to exchange their goods, this way reducing wastes.

My Role

Since this is a personal project I all the parts of the project which includes frontend, backend and some DevOps..

Design

Architecture Overview

For the system design, I chose a monolithic architecture, utilizing Django as the backend framework due to its rapid development capabilities.

As the application server, I selected uWSGI for its scalability features.

I implemented Nginx as a reverse proxy to manage HTTP and HTTPS requests, redirecting all HTTP traffic to HTTPS.

For the database, I opted for an SQL engine, specifically PostgreSQL. This choice was based on the simplicity of my data models and PostgreSQL's ability to efficiently handle the expected load volume for this type of application.

Database Schema Design

For the database schema, I opted for an Entity-Relationship (ER) diagram to visualize the relationships among all tables.

Deployment

Infrastructure Design

For this project's infrastructure architecture, I chose AWS due to its industry-leading position and key benefits, such as AWS ECS, which offers easy deployment with low overhead, high availability, and resilience. Another key point is its cost-effective model, allowing us to pay for EC2 instances and scale horizontally as needed, which is ideal for our proof-of-concept stage.

Additionally, AWS provides excellent documentation, community support, and official assistance when required.

Infrastructure provisioning

I utilized Terraform for Infrastructure as Code (IaC) to provision all the infrastructure. By automating resource provisioning, I ensured repeatability and gained the ability to easily test the infrastructure before deployment.