Features of the Site

Several Technologies have been configured and deployed to make this site possible.

Django

Django is an open-source web framework designed to help developers build secure and maintainable websites efficiently. Some of its most notable features include an Object-Relational Mapper (ORM) for seamless database interactions, a "batteries-included" philosophy that provides numerous built-in tools, robust authentication systems, and its versatility in handling a wide range of web development tasks.

AWS

AWS (Amazon Web Services) is a leading cloud platform offering scalable and flexible solutions for application deployment, including Amazon EC2 (Elastic Compute Cloud). EC2 provides virtual servers with the ability to scale vertically or horizontally to meet workload demands. It supports a wide variety of instance types optimized for compute, memory, storage, or GPU needs and follows a pay-as-you-go pricing model with options like on-demand, reserved, and spot instances. Developers can create reusable, pre-configured environments using custom Amazon Machine Images (AMIs). EC2 integrates with AWS services like VPC for secure networking and efficient traffic management.

User Registration

Django's user registration module provides a built-in User model with fields for common attributes like username, email, and password. It is part of Django's authentication framework, which includes secure password hashing, login, logout, and session management. Developers can extend or replace the default User model for custom functionality. Built-in forms like UserCreationForm simplify user registration, and third-party packages like django-allauth offer additional features like social authentication and email verification. Signals such as user_logged_in and user_logged_out enable tracking and customizing user events.

Docker

Docker is a platform that enables the containerization of applications. It allows developers to package their code, along with all its dependencies, into containers that run independently of the host operating system. These containers leverage the host machine's hardware resources efficiently. Docker containers are highly portable and can be deployed across a wide range of environments seamlessly.

NGINX

NGINX is an HTTP web server that operates on a client-server model to handle user requests efficiently. It excels at serving static files and is highly performant for this purpose. In setups involving dynamic content, NGINX often works in tandem with Gunicorn, facilitating smooth communication between the two to manage application requests and responses.

Gunicorn

Gunicorn is a Python WSGI (Web Server Gateway Interface) HTTP server used for running web applications. In this setup, the Django application is hosted within Gunicorn, which processes incoming requests. These requests are routed through NGINX, which acts as a reverse proxy, ensuring efficient communication between the client, NGINX, and Gunicorn for seamless application delivery.

Postgres

PostgreSQL, commonly referred to as Postgres, is a powerful, free, and open-source relational database management system (RDBMS). It is renowned for its strong security features, reliability, and strict compliance with SQL standards. Additionally, PostgreSQL supports advanced data types, extensibility, and robust transactional capabilities, making it a preferred choice for a wide range of applications.

API

Django REST Framework (DRF) is a powerful library used with Django to build RESTful APIs. These APIs serve as an interface to expose backend data through endpoints, enabling seamless communication with frontend applications. Modern frontend frameworks such as React, Vue, and Angular commonly interact with REST APIs to dynamically render content. However, this site follows a monolithic architecture, where HTML is rendered dynamically on the server. REST, which stands for Representational State Transfer, is an architectural style for web services that operates over the HTTP protocol. It is characterized by three key principles: Data Format: REST APIs typically return data in JSON or XML formats. Statelessness: Each request from a client to the server must contain all necessary information, as the server does not store client session data. HTTP Methods: REST APIs support standard HTTP verbs such as GET (retrieve data), POST (create data), PUT (update data), and DELETE (remove data). By leveraging Django REST Framework, developers can efficiently build scalable and maintainable web APIs that integrate with various frontend technologies or third-party services. Checkout: https://www.django-blog-jb.com/my_blog/api/posts/