-
Соціальна мережа / Social Network
Social Network is a web application built with Django and Django Channels. The project allows users to register accounts, create and manage posts, edit personal profiles, add friends, and communicate through real-time personal and group chats.
- Team Members
- Technologies and Modules
- Installation Guide
- Project Structure
- Application Description
- Main Files Description
- Conclusion
This project was created to help beginner developers learn:
- Django application architecture;
- Database design using ORM;
- Authentication and authorization systems;
- Real-time communication with WebSockets;
- Frontend and backend integration;
- Team development using Git and GitHub.
The project demonstrates how a modern social network can be built using Python and Django technologies.
- Maxim Subach — https://github.com/MaxS2010
- Yaromir Tregub — https://github.com/YaromirTregub
- Nazar Isachenko — https://github.com/IsachenkoNazar
- Django — the main Python framework used to build the website.
- Django Channels — extends Django with WebSocket support.
- WebSocket — enables real-time communication between the client and the server.
- ASGI — asynchronous server interface required for WebSocket support.
- Daphne — ASGI server used to run the project.
- ORM — simplifies database interaction through Python objects.
- python-dotenv — stores sensitive configuration values in environment variables.
- Pillow — image processing library.
- HTML — page structure.
- CSS — page styling.
- JavaScript — client-side interactivity.
- Fetch API — asynchronous communication with the server.
- Django Templates — dynamic HTML rendering.
- SQLite — default database engine.
- CSRF Protection — security mechanism against forged requests.
- Cookies — session storage.
git clone https://github.com/MaxS2010/Social-Network.gitWindows:
python -m venv venv
venv\Scripts\activateLinux/macOS:
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txtCreate a .env file and add the required environment variables.
Example:
SECRET_KEY=''
EMAIL_HOST_USER=""
EMAIL_HOST_PASSWORD=""
DATABASE_USER=""
DATABASE_PASSWORD=""
DATABASE_HOST=""
DATABASE_PORT=""
DATABASE_NAME=""
CLOUDINARY_CLOUD_NAME=""
CLOUDINARY_API_KEY=""
CLOUDINARY_API_SECRET=""python manage.py migratepython manage.py runserverOpen your browser and visit:
http://127.0.0.1:8000/
Social-Network
│
├── user_app
├── home_app
├── post_app
├── profile_app
├── chat_app
│
├── templates
├── static
├── media
│
├── manage.py
└── requirements.txt
Responsible for:
- user registration;
- authentication;
- session management;
- logout functionality;
- validation of registration and login forms;
- protection of private pages through authentication decorators.
Responsible for:
- the homepage;
- the base template shared across the project;
- global context data through
context_processors.py.
Responsible for:
- creating posts;
- editing posts;
- deleting posts;
- pagination;
- image uploads and compression;
- tag management using Many-to-Many relationships.
Responsible for:
- user profiles;
- profile avatars;
- phone numbers and descriptions;
- online/offline status indicators;
- friendship management;
- user filtering by friendship status.
Responsible for:
- personal chats;
- group chats;
- real-time messaging through WebSockets;
- unread message notifications;
- synchronization of chat updates between users.
Contains database models and relationships.
Processes incoming HTTP requests and generates responses.
Maps URLs to views.
Contains Django forms used for user input validation.
Registers models within Django Admin.
Application configuration.
Contains automated tests for models, forms, and views.
Handles WebSocket connections and real-time events.
Defines WebSocket URL routes and routing configuration.
Stores HTML templates rendered by Django.
Stores CSS, JavaScript files, icons, and images.
Contains helper functions and reusable business logic.
- User registration and login
- Session-based authentication
- CSRF protection
- User profiles
- Friendship requests
- Friend management
- Online/offline status
- Create, edit, and delete posts
- Image uploads
- Tag support
- Pagination
- Personal messaging
- Group chats
- WebSocket communication
- Unread message notifications
During the development of the project, I gained practical experience with Django, WebSocket and other modules and libraries. I also learned how to work in a team, and some tricks for writing code faster.
In the future, the project can be expanded by adding cosmetic changes, such as stickers, GIF animations, voice messages and other functionality.
Соціальна мережа, створена на Django та Django Channels. Проєкт дозволяє користувачам реєструватися, створювати пости, додавати друзів, переглядати профілі та обмінюватися повідомленнями в режимі реального часу.
- Учасники
- Технології та модулі
- Інструкція для запуску
- Структура проєкту
- Опис додатків
- Опис основних файлів
- Висновок
Цей проєкт був створений, щоб допомогти початківцям у програмуванні вивчити:
- архітектуру вебзастосунків на Django;
- проєктування баз даних за допомогою ORM;
- системи автентифікації та авторизації користувачів;
- обмін даними в режимі реального часу за допомогою WebSocket;
- інтеграцію фронтенду та бекенду;
- командну розробку з використанням Git і GitHub.
Проєкт демонструє, як за допомогою Python та технологій Django можна створити сучасну соціальну мережу з функціями взаємодії користувачів, публікації контенту та обміну повідомленнями в реальному часі.
- Максим Субач — https://github.com/MaxS2010
- Яромір Трегуб — https://github.com/YaromirTregub
- Назарій Ісаченко — https://github.com/IsachenkoNazar
- Django — основний веб-фреймворк.
- Django Channels — підтримка WebSocket.
- Daphne — ASGI сервер.
- WebSocket — обмін повідомленнями в реальному часі.
- ORM — робота з базою даних через Python-код.
- Python-dotenv — робота зі змінними середовища.
- Pillow — обробка зображень.
- HTML
- CSS
- JavaScript
- Fetch API
- Django Templates (Jinja-подібний шаблонізатор)
- SQLite
- CSRF Token
- Cookies
git clone <repository_url>Windows:
python -m venv venv
venv\Scripts\activateLinux/macOS:
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txtСтворіть файл .env та додайте необхідні змінні середовища.
SECRET_KEY=''
EMAIL_HOST_USER=""
EMAIL_HOST_PASSWORD=""
DATABASE_USER=""
DATABASE_PASSWORD=""
DATABASE_HOST=""
DATABASE_PORT=""
DATABASE_NAME=""
CLOUDINARY_CLOUD_NAME=""
CLOUDINARY_API_KEY=""
CLOUDINARY_API_SECRET=""python manage.py migrate
python manage.py runserverЗапустіть ваш браузер і відкрийте:
http://127.0.0.1:8000/
Social-Network
│
├── user_app
├── home_app
├── post_app
├── profile_app
├── chat_app
│
├── templates
├── static
├── media
│
├── manage.py
└── requirements.txt
Відповідає за:
- реєстрацію користувачів;
- авторизацію;
- вихід із системи;
- перевірку даних форм;
- роботу із сесіями та cookies.
Відповідає за:
- головну сторінку;
- передачу загальних даних через context_processors.
Відповідає за:
- створення постів;
- редагування постів;
- видалення постів;
- роботу із зображеннями;
- систему тегів.
Відповідає за:
- профілі користувачів;
- аватари;
- статус онлайн/офлайн;
- систему друзів;
- фільтрацію користувачів.
Відповідає за:
- особисті чати;
- групові чати;
- повідомлення через WebSocket;
- непрочитані повідомлення;
- оновлення даних у реальному часі.
Моделі бази даних.
Обробка HTTP-запитів.
Маршрутизація URL.
Форми введення даних.
Реєстрація моделей в Django Admin.
Конфігурація додатку.
Тестування моделей, форм та представлень.
Обробка WebSocket-з'єднань.
Маршрутизація WebSocket-з'єднань.
HTML-шаблони.
CSS, JavaScript та зображення.
Допоміжні функції для бізнес-логіки.
Під час розробки проєкту було отримано практичний досвід з Django, WebSocket та іншими модулями і бібліотеками. Також я навчився працювати в команді, та деяких фішок для швидшого написання коду.
У майбутньому проєкт можна розширити додаванням косметичних змін, по типу стікерів, GIF-анімацій, голосових повідомлень та інший функціонал.


