The Breezy App project aims to develop a modern social platform for content sharing and interactions.
Breezy is a modern web platform designed to facilitate content sharing and social interactions. The project is structured in microservices for a scalable and maintainable architecture, with a robust backend and a reactive frontend.
The backend includes several services: Auth Service for authentication, Feed Service for news feed, Posts Service for publications, and Users Service for profiles.
| 🔐 Authentication | 📱 Responsive UI | 🐳 Dockerized |
| 🌐 Microservices | ⚡ Real-time feed | 🔒 Secure APIs |
| 📝 Posts & Comments | 👥 User profiles | 🛠️ TypeScript |
| 🎨 Modern design | 📚 Documented | 🚀 Scalable |
Ensure you have Docker and Docker Compose installed on your machine.
Clone the repository:
git clone <url-du-repo>
cd breezy
Copy the configuration example and environment files:
cp compose.override.yaml.example compose.override.yaml
# copy the global .env file and the frontend-specific one
cp .env.example .env
cp frontend/.env.example frontend/.envModify compose.override.yaml and the .env files as needed (e.g., database configuration, API URLs).
Launch the services:
docker-compose up --build
By default the frontend will be served on port 80, so you can access it at: http://localhost.
Useful commands to manage the application.
docker-compose
├── up --build # Builds and starts all services
├── down # Stops all services
└── logs # Shows logs from servicesTo access the application, open your browser and navigate to http://localhost:3000.
| Category | Library | Description |
|---|---|---|
| Backend | Server-side technologies for APIs and data storage. | |
| Frontend | Client-side framework, styling, and state management. | |
| DevOps | Containerization, orchestration, CI/CD, security scanning, and code quality tools. | |
| UI Components | Reusable UI components and icons. |
For detailed information about the technical concepts and implementations.
Comprehensive documentation is available to help you understand the project's architecture and APIs.
API Docs: Learn about the backend services and endpoints.
The frontend uses Redux Toolkit for efficient state management across the application. Redux Toolkit simplifies Redux development with built-in best practices.
src/lib/store/
├── index.ts # Store configuration and setup
├── slices/
│ ├── authSlice.ts # Authentication state (user, tokens)
│ ├── postsSlice.ts # Posts and feed management
│ ├── usersSlice.ts # User profiles and following
│ └── uiSlice.ts # UI state (modals, loading states)
- Slices: Each feature has its own slice managing related state and actions
- Async Thunks: API calls are handled with createAsyncThunk for loading states
- Selectors: Memoized selectors for efficient data access
- Middleware: Integrated with Redux DevTools for debugging
This architecture ensures predictable state updates and easy debugging throughout the application.
Breezy implements a robust database redundancy system using MongoDB Replica Sets orchestrated through Docker Compose, ensuring high availability and data durability.
- Primary Node: Handles all write operations and coordinates with secondaries
- Secondary Nodes: Maintain copies of the primary's data, can serve read operations
- Arbiter Node: Participates in elections but doesn't store data, ensures odd number of voting members
services:
mongodb-primary:
# Primary database instance
mongodb-secondary:
# Secondary replica
mongodb-arbiter:
# Arbiter for elections- Automatic Failover: If primary fails, secondaries elect a new primary automatically
- Data Redundancy: Multiple copies ensure no single point of failure
- Read Scaling: Secondaries can handle read queries to distribute load
- Zero Downtime: Maintenance and updates can be performed without service interruption
This setup provides enterprise-grade reliability for the social platform's data layer.
Breezy maintains high code quality and security standards through automated DevOps practices.
- GitHub Actions: Automated testing and deployment pipelines
- Multi-stage builds: Separate environments for development, staging, and production
- ESLint: JavaScript/TypeScript linting for consistent code style
- Prettier: Automated code formatting
- TypeScript: Static type checking to prevent runtime errors
- Snyk: Continuous security scanning for dependencies and container images
- Automated Reports: Regular vulnerability assessments and remediation tracking
- Dependency Updates: Automated PRs for security patches
- Centralized Logging: Aggregated logs from all microservices
- Health Checks: Automated monitoring of service availability
- Performance Metrics: Real-time monitoring of application performance
2025 © Breezy. All rights reserved.
