Skip to content

Repository files navigation

☁️ Breezy app ☁️

License: MIT

The Breezy App project aims to develop a modern social platform for content sharing and interactions.


📚 Overview


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

📦 Installation

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/.env

Modify 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.


🚀 Getting Started

Useful commands to manage the application.

docker-compose
├── up --build          # Builds and starts all services
├── down                # Stops all services
└── logs                # Shows logs from services

To access the application, open your browser and navigate to http://localhost:3000.


Category Library Description
Backend
  • Node.js
  • Express.js
  • MongoDB
Server-side technologies for APIs and data storage.
Frontend
  • Next.js
  • TypeScript
  • Tailwind CSS
  • Redux Toolkit
Client-side framework, styling, and state management.
DevOps
  • Docker
  • Docker Compose
  • GitHub Actions
  • Snyk
  • ESLint
Containerization, orchestration, CI/CD, security scanning, and code quality tools.
UI Components
  • shadcn/ui
  • Lucide Icons
Reusable UI components and icons.

🔧 Technical Implementation Details

For detailed information about the technical concepts and implementations.

📖 API Documentation

Comprehensive documentation is available to help you understand the project's architecture and APIs.

API Docs: Learn about the backend services and endpoints.

API Documentation

🗂️ State Management with Redux Toolkit

The frontend uses Redux Toolkit for efficient state management across the application. Redux Toolkit simplifies Redux development with built-in best practices.

Store Structure

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)

How It Works

  • 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.

🛡️ Database Redundancy & High Availability

Breezy implements a robust database redundancy system using MongoDB Replica Sets orchestrated through Docker Compose, ensuring high availability and data durability.

Replica Set Configuration

  • 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

Docker Compose Setup

services:
  mongodb-primary:
    # Primary database instance
  mongodb-secondary:
    # Secondary replica
  mongodb-arbiter:
    # Arbiter for elections

Benefits

  • 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.

🚀 DevOps & Quality Assurance

Breezy maintains high code quality and security standards through automated DevOps practices.

Continuous Integration

  • GitHub Actions: Automated testing and deployment pipelines
  • Multi-stage builds: Separate environments for development, staging, and production

Code Quality

  • ESLint: JavaScript/TypeScript linting for consistent code style
  • Prettier: Automated code formatting
  • TypeScript: Static type checking to prevent runtime errors

Security & Vulnerability Management

  • Snyk: Continuous security scanning for dependencies and container images
  • Automated Reports: Regular vulnerability assessments and remediation tracking
  • Dependency Updates: Automated PRs for security patches

Monitoring & Logging

  • Centralized Logging: Aggregated logs from all microservices
  • Health Checks: Automated monitoring of service availability
  • Performance Metrics: Real-time monitoring of application performance

✍️ Authors


2025 © Breezy. All rights reserved.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages