10 примеров проектов
1. Telegram-бот для заказа еды
Цель: 50K пользователей, 5K заказов/день
Функционал:
- Просмотр меню с категориями и фильтрами
- Добавление товаров в корзину
- Выбор времени доставки (слоты по 30 минут)
- Онлайн-оплата через платежные системы
- Отслеживание статуса заказа в реальном времени
- История заказов с повторением
- Реферальная система с бонусами
- Push-уведомления о статусах
- Оценка заказа и отзывы
Стек реализации:
- Backend: FastAPI + Aiogram (асинхронная обработка сообщений)
- БД: PostgreSQL (заказы, пользователи) + Redis (сессии, кэш меню)
- Хранение: MinIO/S3 для фото блюд
- Очереди: Celery + RabbitMQ для фоновых задач
- Платежи: Stripe/ЮKassa интеграция
- Деплой: Docker на VPS, вебхуки Telegram
Схема БД:
Users(user_id BIGINT, phone VARCHAR, address JSONB, language VARCHAR, created_at TIMESTAMP)
Categories(category_id SERIAL, name VARCHAR, image_url VARCHAR, sort_order INTEGER)
Dishes(dish_id SERIAL, category_id INT, name VARCHAR, description TEXT, price DECIMAL,
image_url VARCHAR, is_available BOOLEAN, cooking_time_minutes INT)
Carts(cart_id SERIAL, user_id BIGINT, session_id UUID, created_at TIMESTAMP)
CartItems(item_id SERIAL, cart_id INT, dish_id INT, quantity INT, notes TEXT)
Orders(order_id SERIAL, user_id BIGINT, total_amount DECIMAL, status VARCHAR,
delivery_time TIMESTAMP, address JSONB, payment_status VARCHAR, created_at TIMESTAMP)
OrderItems(item_id SERIAL, order_id INT, dish_id INT, quantity INT, price_at_time DECIMAL)
Расчет нагрузки:
- Сообщений в день: 5K заказов × 10 сообщений = 50K (~35/мин)
- Пиковая нагрузка: обед 12:00-14:00 - 2000 заказов/час (~33/мин)
- Хранение фото: 5K блюд × 500KB = 2.5GB/месяц
- Сессии Redis: 50K пользователей × 50KB = 2.5GB
- Требования: 2 CPU, 4GB RAM, 50GB SSD
2. Сайт юридических услуг
Цель: 10K посетителей/месяц, 100 консультаций/день
Функционал:
- Онлайн-запись на консультацию с выбором времени
- Личный кабинет клиента с историей обращений
- CRM система для юристов с напоминаниями
- Электронный документооборот с подписанием
- Оплата услуг онлайн с инвойсами
- База знаний с законодательством и FAQ
- Видеоконсультации через интеграцию
- Отзывы о юристах и рейтинговая система
Стек реализации:
- Backend: Django + Django REST Framework
- Frontend: React или Django Templates
- БД: PostgreSQL с Full-Text Search
- Поиск: Elasticsearch для законодательной базы
- Файлы: S3 + CloudFront для документов
- Платежи: Stripe/ЮKassa с автоматическими инвойсами
- Видео: Jitsi/ScaledRTC интеграция
Схема БД:
Clients(client_id SERIAL, name VARCHAR, email VARCHAR UNIQUE, phone VARCHAR,
company VARCHAR, created_at TIMESTAMP)
Lawyers(lawyer_id SERIAL, user_id INT, specialization VARCHAR[], rating DECIMAL,
experience_years INT, consultation_price DECIMAL, bio TEXT)
Services(service_id SERIAL, name VARCHAR, description TEXT, base_price DECIMAL,
duration_minutes INT, category VARCHAR)
Appointments(appointment_id SERIAL, client_id INT, lawyer_id INT, service_id INT,
datetime TIMESTAMP, status VARCHAR, notes TEXT, meeting_link VARCHAR)
LegalDocuments(doc_id SERIAL, appointment_id INT, file_url VARCHAR, doc_type VARCHAR,
signed_at TIMESTAMP, hash VARCHAR)
Payments(payment_id SERIAL, appointment_id INT, amount DECIMAL, status VARCHAR,
transaction_id VARCHAR, paid_at TIMESTAMP)
KBArticles(article_id SERIAL, title VARCHAR, content TEXT, category VARCHAR,
lawyer_id INT, views_count INT)
Расчет нагрузки:
- Трафик: 10K × 3MB/страница = 30GB/месяц
- Документы: 100 × 5MB = 500MB/день, 15GB/месяц
- Поисковые запросы: 500/день к Elasticsearch
- Видеоконсультации: 20 одновременных сессий
- Требования: 4 CPU, 8GB RAM, 200GB SSD + отдельный Elasticsearch
3. Сервис коротких ссылок
Цель: 100M редиректов/месяц, 1M новых ссылок/месяц
Функционал:
- Создание короткой ссылки с кастомным алиасом
- Статистика переходов в реальном времени
- Группировка ссылок по проектам
- API для разработчиков с лимитами
- Просмотр географии переходов
- UTM-метки и аналитика
- Срок действия ссылок
- Брендированные домены
Стек реализации:
- Backend: FastAPI (высокая производительность)
- БД: PostgreSQL (метаданные) + Redis (кэш редиректов)
- Аналитика: ClickHouse для агрегации статистики
- Кэш: Redis LRU кэш на 1M популярных ссылок
- Брокер: Kafka для потоковой обработки кликов
- Балансировщик: Nginx с кэшированием 301 редиректов
Схема БД:
Users(user_id SERIAL, email VARCHAR UNIQUE, api_key VARCHAR, plan_type VARCHAR,
rate_limit INT, created_at TIMESTAMP)
Links(link_id SERIAL, user_id INT, original_url TEXT, short_code VARCHAR UNIQUE,
title VARCHAR, clicks_count BIGINT, created_at TIMESTAMP, expires_at TIMESTAMP)
LinkGroups(group_id SERIAL, user_id INT, name VARCHAR, created_at TIMESTAMP)
LinkGroupMembers(id SERIAL, link_id INT, group_id INT)
-- ClickHouse для кликов
CREATE TABLE clicks (
click_id UUID,
link_id INT,
ip_address String,
user_agent String,
referrer String,
country String,
city String,
device String,
clicked_at DateTime
) ENGINE = MergeTree()
ORDER BY (link_id, clicked_at)
Расчет нагрузки:
- Пик: 5000 редиректов/сек (18000/час)
- Redis: кэш 1M ссылок × 200 байт = 200MB
- ClickHouse: 100M × 500 байт = 50GB/месяц
- Пропускная: 5K RPS × 300 байт = 1.5MB/сек
- Архитектура: Шардирование по хэшу короткого кода
- Требования: 8 CPU, 16GB RAM, Redis кластер 3 нода
4. API для мобильного банка
Цель: 500K пользователей, 10M операций/месяц
Функционал:
- Просмотр баланса и истории операций
- Переводы между счетами и по номеру телефона
- Оплата услуг (ЖКХ, мобильная связь, налоги)
- Блокировка/разблокировка карты
- Уведомления о операциях в реальном времени
- Валютные курсы и конвертация
- Биометрия для входа
- Инвестиции и депозиты
Стек реализации:
- Архитектура: Микросервисы на FastAPI
- Сервисы: auth, accounts, transactions, notifications, cards
- Аутентификация: JWT + OAuth 2.0 + биометрия
- БД: PostgreSQL (основное) + Cassandra (история)
- Кэш: Redis Sentinel кластер
- WebSocket: для push-уведомлений
- Безопасность: HashiCorp Vault для ключей
Схема БД:
-- PostgreSQL
Clients(client_id SERIAL, phone VARCHAR UNIQUE, email VARCHAR,
password_hash VARCHAR, is_active BOOLEAN, created_at TIMESTAMP)
Accounts(account_id SERIAL, client_id INT, account_number VARCHAR UNIQUE,
balance DECIMAL, currency VARCHAR, type VARCHAR, created_at TIMESTAMP)
Cards(card_id SERIAL, account_id INT, card_number VARCHAR, expiry_date DATE,
cvv_hash VARCHAR, is_blocked BOOLEAN, daily_limit DECIMAL)
-- Cassandra для транзакций
CREATE TABLE transactions (
transaction_id UUID,
from_account_id INT,
to_account_id INT,
amount DECIMAL,
type VARCHAR,
status VARCHAR,
description TEXT,
created_at TIMESTAMP,
PRIMARY KEY (from_account_id, created_at)
) WITH CLUSTERING ORDER BY (created_at DESC);
Расчет:
- RPS: 10M/30д/86400сек ≈ 4 запроса/сек (пик до 50/сек)
- Cassandra: 10M × 1KB = 10GB/месяц
- WebSocket: 100K одновременных подключений × 50KB = 5GB RAM
- Rate limiting: 100 запросов/мин на пользователя
- Требования: Kubernetes кластер, минимум 10 нод
5. Платформа онлайн-курсов
Цель: 100K студентов, 1000 курсов, 10K параллельных стримов
Функционал:
- Каталог курсов с фильтрами и рейтингами
- Видео-лекции с субтитрами
- Интерактивные тесты и задания
- Отслеживание прогресса обучения
- Автоматическая выдача сертификатов
- Форум и чаты по курсам
- Личный кабинет с рекомендациями
- Мобильное приложение для обучения
Стек реализации:
- Backend: Django (админка, курсы, прогресс)
- Видео: HLS стриминг через CDN
- БД: PostgreSQL с индексами для поиска
- Хранилище: S3 для видео + CloudFront CDN
- Поиск: Elasticsearch по курсам и лекциям
- WebSocket: Django Channels для чатов
- Кэш: Redis для прогресса и рекомендаций
Схема БД:
Students(student_id SERIAL, email VARCHAR UNIQUE, name VARCHAR,
subscription_end DATE, current_course_id INT)
Instructors(instructor_id SERIAL, user_id INT, bio TEXT,
specialization VARCHAR[], rating DECIMAL)
Courses(course_id SERIAL, instructor_id INT, title VARCHAR,
description TEXT, price DECIMAL, category VARCHAR,
difficulty VARCHAR, students_count INT, created_at TIMESTAMP)
Lessons(lesson_id SERIAL, course_id INT, title VARCHAR,
video_url VARCHAR, duration INT, order_number INT,
is_free BOOLEAN, materials JSONB)
Progress(progress_id SERIAL, student_id INT, lesson_id INT,
completed_at TIMESTAMP, score INT, time_spent INT)
Quizzes(quiz_id SERIAL, lesson_id INT, question TEXT,
options JSONB, correct_answer VARCHAR, points INT)
Certificates(certificate_id UUID, student_id INT, course_id INT,
issued_at TIMESTAMP, download_url VARCHAR)
Расчет:
- Видеотрафик: 10K × 1.5Mbps = 15Gbps (пиковая)
- Хранение видео: +500GB/месяц новых материалов
- Чат сообщения: 100K × 10 сообщений = 1M/день
- PostgreSQL: 100K × 5 курсов × 20 уроков = 10M записей прогресса
- CDN: 80% трафика через edge кэши
- Требования: Медиасерверы + CDN, основное приложение 16CPU/32GB
6. Агрегатор новостей
Цель: 1M посетителей/день, парсинг 1000 источников
Функционал:
- Автоматический парсинг новостей по расписанию
- Категоризация с помощью ML
- Персонализированная лента новостей
- Поиск по архиву с фильтрами
- Подписки на темы и авторов
- Экспорт новостей в RSS/JSON
- Модерация дубликатов
- Аналитика популярности
Стек реализации:
- Парсинг: Scrapy кластер (20 воркеров)
- Backend: FastAPI для API
- БД: PostgreSQL для метаданных
- Кэш: Redis для главной страницы
- Очереди: Celery для фонового парсинга
- ML: scikit-learn для категоризации
- Поиск: Elasticsearch для полнотекстового поиска
Схема БД:
Sources(source_id SERIAL, name VARCHAR, url VARCHAR,
category VARCHAR, parsing_interval INT, last_parsed_at TIMESTAMP)
Articles(article_id SERIAL, source_id INT, title VARCHAR,
content TEXT, url VARCHAR UNIQUE, published_at TIMESTAMP,
category VARCHAR, sentiment_score DECIMAL, image_url VARCHAR)
Tags(tag_id SERIAL, name VARCHAR UNIQUE, description TEXT)
ArticleTags(id SERIAL, article_id INT, tag_id INT)
Users(user_id SERIAL, email VARCHAR, preferences JSONB, created_at TIMESTAMP)
ReadHistory(id SERIAL, user_id INT, article_id INT, read_at TIMESTAMP)
Subscriptions(id SERIAL, user_id INT, tag_id INT, created_at TIMESTAMP)
MLModels(model_id SERIAL, name VARCHAR, version VARCHAR,
accuracy DECIMAL, deployed_at TIMESTAMP)
Расчет:
- Парсинг: 1000 источников × 4 раза/час = 4000 запросов/час
- Трафик парсинга: 4000 × 500KB = 2GB/час
- Хранение: 100K статей/день × 10KB = 1GB/день, 30GB/месяц
- Elasticsearch: 3M статей × 20KB = 60GB индекс
- Парсинг кластер: 8CPU/16GB, основной сервер 4CPU/8GB
- Кэш главной: Redis 2GB, обновление каждые 5 минут
7. Сервис каршеринга
Цель: 10K авто, 100K поездок/месяц
Функционал:
- Поиск ближайших авто на карте
- Бронирование на определенное время
- Открытие дверей по QR-коду/приложению
- Оплата по минутам/километрам
- Отслеживание поездки в реальном времени
- История поездок с детализацией
- Поддержка 24/7 через чат
- Система штрафов и бонусов
Стек реализации:
- Микросервисы: FastAPI (booking, tracking, billing, support)
- Геоданные: PostGIS для пространственных запросов
- Телеметрия: TimescaleDB для метрик
- WebSocket: обновление позиций каждые 5 сек
- Redis GEO: кэш позиций автомобилей
- Платежи: Stripe с подписками
- Мониторинг: Grafana + Prometheus
Схема БД:
Users(user_id SERIAL, license_number VARCHAR, rating DECIMAL,
balance DECIMAL, is_verified BOOLEAN, created_at TIMESTAMP)
Cars(car_id SERIAL, model VARCHAR, license_plate VARCHAR UNIQUE,
location GEOGRAPHY, battery_level INT, is_available BOOLEAN,
hourly_rate DECIMAL, maintenance_due DATE)
Trips(trip_id SERIAL, user_id INT, car_id INT, start_time TIMESTAMP,
end_time TIMESTAMP, start_location GEOGRAPHY, end_location GEOGRAPHY,
total_cost DECIMAL, distance_km DECIMAL, status VARCHAR)
Payments(payment_id SERIAL, trip_id INT, amount DECIMAL,
payment_method VARCHAR, status VARCHAR, created_at TIMESTAMP)
-- TimescaleDB для телеметрии
CREATE TABLE telemetry (
time TIMESTAMPTZ NOT NULL,
car_id INT NOT NULL,
location GEOGRAPHY,
speed DECIMAL,
battery INT,
engine_temp DECIMAL
);
SELECT create_hypertable('telemetry', 'time');
ParkingZones(zone_id SERIAL, name VARCHAR, polygon GEOGRAPHY,
max_cars INT, hourly_rate DECIMAL)
Расчет:
- Геозапросы: 10K пользователей × 1 запрос/мин = 10K/мин
- Телеметрия: 10K авто × 1 точка/сек = 864M точек/день
- TimescaleDB: 864M × 100 байт = 86GB/день (после сжатия ~8GB)
- WebSocket: 10K одновременных соединений × 50KB = 500MB RAM
- Требования: GPU для геоиндексов, TimescaleDB кластер
8. Система тикетов (поддержка)
Цель: 500 агентов, 10K тикетов/день
Функционал:
- Создание тикета через веб-форму/email
- Автоматическое назначение агентам
- Приоритеты (низкий, средний, высокий, критичный)
- Прикрепление файлов и скриншотов
- История переписки с таймлайном
- Контроль SLA (время ответа, решение)
- База знаний с часто задаваемыми вопросами
- Отчеты по эффективности агентов
Стек реализации:
- Backend: Django с встроенной админкой
- БД: PostgreSQL с Full-Text Search
- Redis: очередь писем и нотификаций
- WebSocket: live-chat для общения
- MinIO: хранилище для вложений
- Celery Beat: автоматическое эскалация тикетов
- Email: отправка через SMTP/API
Схема БД:
Clients(client_id SERIAL, email VARCHAR UNIQUE, company VARCHAR,
plan_type VARCHAR, created_at TIMESTAMP)
Agents(agent_id SERIAL, user_id INT, name VARCHAR, department VARCHAR,
max_tickets INT, current_tickets INT, is_available BOOLEAN)
Tickets(ticket_id SERIAL, client_id INT, agent_id INT, subject VARCHAR,
category VARCHAR, priority VARCHAR, status VARCHAR,
created_at TIMESTAMP, first_response_at TIMESTAMP,
resolved_at TIMESTAMP, sla_deadline TIMESTAMP)
Messages(message_id SERIAL, ticket_id INT, sender_type VARCHAR,
content TEXT, is_internal BOOLEAN, sent_at TIMESTAMP)
Attachments(attachment_id SERIAL, message_id INT, file_url VARCHAR,
file_name VARCHAR, file_size BIGINT, mime_type VARCHAR)
KBArticles(article_id SERIAL, title VARCHAR, content TEXT,
category VARCHAR, tags VARCHAR[], views_count INT,
helpful_count INT, created_at TIMESTAMP)
SLAMetrics(metric_id SERIAL, ticket_id INT, first_response_time INT,
resolution_time INT, agent_id INT, created_at DATE)
Расчет:
- Тикеты: 10K/день = ~7/мин, пик 100/мин
- Сообщения: 10K × 5 сообщений = 50K/день
- Хранение вложений: 10K × 2MB = 20GB/день, 600GB/месяц
- PostgreSQL: индексы на ticket_id, status, created_at
- Требования: 8CPU, 16GB RAM, отдельный MinIO сервер
9. IoT платформа для умного дома
Цель: 1M устройств, 10K сообщений/сек
Функционал:
- Регистрация и аутентификация устройств
- Сбор телеметрии в реальном времени
- Автоматизация через правила (если-то)
- Push-уведомления на события
- История показаний с графиками
- Удаленное управление устройствами
- Мониторинг энергопотребления
- Интеграция с голосовыми помощниками
Стек реализации:
- Backend: FastAPI для REST API
- MQTT: Mosquitto для устройств (1M подключений)
- БД: TimescaleDB для временных рядов
- Redis Pub/Sub: события между сервисами
- Apache Spark: агрегация данных для аналитики
- WebSocket: дашборды в реальном времени
- Кэш: Redis для состояний устройств
Схема БД:
Users(user_id SERIAL, email VARCHAR UNIQUE, subscription_plan VARCHAR,
created_at TIMESTAMP, trial_end DATE)
Devices(device_id SERIAL, user_id INT, device_type VARCHAR, name VARCHAR,
location VARCHAR, firmware_version VARCHAR, last_seen TIMESTAMP,
is_online BOOLEAN, mqtt_topic VARCHAR)
Sensors(sensor_id SERIAL, device_id INT, sensor_type VARCHAR, unit VARCHAR,
min_value DECIMAL, max_value DECIMAL, precision INT)
-- TimescaleDB для показаний
CREATE TABLE readings (
time TIMESTAMPTZ NOT NULL,
sensor_id INT NOT NULL,
value DECIMAL,
location VARCHAR
);
SELECT create_hypertable('readings', 'time');
Automations(automation_id SERIAL, user_id INT, name VARCHAR,
trigger_condition JSONB, action JSONB, is_active BOOLEAN,
last_triggered TIMESTAMP)
Notifications(notification_id SERIAL, user_id INT, device_id INT,
message TEXT, severity VARCHAR, sent_at TIMESTAMP,
read_at TIMESTAMP)
Rules(rule_id SERIAL, automation_id INT, condition_type VARCHAR,
condition_params JSONB, action_order INT)
DeviceLogs(log_id SERIAL, device_id INT, event_type VARCHAR,
details JSONB, occurred_at TIMESTAMP)
Расчет:
- MQTT подключения: 1M × 16KB = 16GB TCP буферов
- Телеметрия: 10K сообщений/сек = 864M/день
- TimescaleDB: 864M × 50 байт = 43GB/день (сжатие 10:1 = 4.3GB)
- Redis: состояния 1M устройств × 2KB = 2GB
- Масштабирование: MQTT кластер, шардирование TimescaleDB
10. Маркетплейс для фрилансеров
Цель: 100K фрилансеров, 50K проектов/месяц
Функционал:
- Размещение проектов с бюджетом и сроками
- Поиск фрилансеров по навыкам и рейтингу
- Портфолио с работами и отзывами
- Чат между заказчиком и исполнителем
- Escrow система для безопасных платежей
- Отзывы и рейтинговая система
- Арбитраж при спорах
- Уведомления о новых проектах
- Система скидок и промокодов
Стек реализации:
- Backend: Django (сложная бизнес-логика)
- Поиск: Elasticsearch по профилям и проектам
- БД: PostgreSQL с транзакциями
- Redis: кэш рейтингов и рекомендаций
- WebSocket: Django Channels для чата
- Платежи: Stripe Connect для escrow
- Уведомления: Email + WebSocket
- Deploy: Kubernetes для масштабирования
Схема БД:
Clients(client_id SERIAL, company VARCHAR, budget_range VARCHAR,
rating DECIMAL, projects_posted INT, created_at TIMESTAMP)
Freelancers(freelancer_id SERIAL, user_id INT, specialization VARCHAR[],
hourly_rate DECIMAL, rating DECIMAL, completed_projects INT,
total_earned DECIMAL, is_available BOOLEAN)
Skills(skill_id SERIAL, name VARCHAR UNIQUE, category VARCHAR)
FreelancerSkills(id SERIAL, freelancer_id INT, skill_id INT, level INT)
Projects(project_id SERIAL, client_id INT, title VARCHAR, description TEXT,
budget DECIMAL, currency VARCHAR, deadline DATE, status VARCHAR,
created_at TIMESTAMP, skills_required JSONB)
Bids(bid_id SERIAL, project_id INT, freelancer_id INT, amount DECIMAL,
delivery_days INT, proposal TEXT, status VARCHAR, created_at TIMESTAMP)
Contracts(contract_id SERIAL, project_id INT, freelancer_id INT,
total_amount DECIMAL, escrow_status VARCHAR, created_at TIMESTAMP,
completed_at TIMESTAMP)
Milestones(milestone_id SERIAL, contract_id INT, description TEXT,
amount DECIMAL, status VARCHAR, due_date DATE, completed_at TIMESTAMP)
Reviews(review_id SERIAL, contract_id INT, reviewer_id INT, reviewee_id INT,
rating INT, comment TEXT, created_at TIMESTAMP)
Messages(message_id SERIAL, contract_id INT, sender_id INT,
content TEXT, attachments JSONB, sent_at TIMESTAMP, read_at TIMESTAMP)
Disputes(dispute_id SERIAL, contract_id INT, initiator_id INT,
reason TEXT, status VARCHAR, resolution TEXT, created_at TIMESTAMP)
Расчет:
- Поисковые запросы: 100K × 10 запросов = 1M/день
- Сообщения в чате: 50K проектов × 20 сообщений = 1M/день
- Платежи: 50K × $500 = $25M транзакций/месяц
- Комиссия: 10% от $25M = обработка $2.5M
- Elasticsearch: 100K профилей × 10KB = 1GB индекс
- Требования: High-availability кластер, PCI DSS compliance для платежей