Skip to content

Commit

Permalink
Merge pull request #37 from omar-sarfraz/docs
Browse files Browse the repository at this point in the history
Add ReadMe File
  • Loading branch information
omar-sarfraz authored Oct 2, 2024
2 parents c4687c6 + 5976e03 commit 82894b4
Show file tree
Hide file tree
Showing 7 changed files with 134 additions and 1 deletion.
4 changes: 3 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
public
dist
dist
.env
.env.local
11 changes: 11 additions & 0 deletions .env-example
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
ENVIRONMENT=development
DB_NAME=project_listings
DB_USER=YOUR_DB_USER_NAME
DB_PASSWORD=YOUR_DB_PASSWORD
DB_HOST=postgres
DB_PORT=5432
PORT=5000
KEY=ANY_NUMBER
SECTRET=SECRET_STRING
GEMINI_API_KEY=YOUR_GEMINI_API_KEY
SENTRY_AUTH_TOKEN=YOUR_SENTRY_BACKEND_PROJECT_TOKEN
3 changes: 3 additions & 0 deletions React_Project/.env-example
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
VITE_ENVIRONMENT = "development"
VITE_BASE_URL = "http://localhost:5000"
VITE_WEBSOCKET_URL = "ws://localhost:4000"
117 changes: 117 additions & 0 deletions ReadMe.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Project Listings

A freelance project marketplace platform with real-time communication, offline support, and a microservices architecture. Built using TypeScript.

## 🚀 Features

### User Management

- 👤 Freelancer and Client user roles
- 🔐 Secure login and signup system using Passport JS and JWT
- 🛡️ Protected routes for authenticated users

### Project Management

- 📋 Paginated project listing
- ✏️ Full CRUD operations for projects and bids
- 📝 Rich text editor with AI autocomplete suggestions
- 📎 File upload capability for projects
- 💬 Commenting system on projects

### Bidding & Communication

- 🤝 Freelancers can submit bids on projects
- 📨 Real-time chat between client and freelancer after bid acceptance
- ♾️ Infinite scroll with lazy loading for chat history

### Offline Support

- 🔄 Offline-first architecture for project/bid submissions
- 💾 Local storage of data using Redux Persist
- 🔁 Automatic synchronization when back online
- 📱 Progressive Web App (PWA) with cached pages/data

### Notifications

- 🔔 Real-time push notifications
- 🎯 Custom toast implementation

## 🛠️ Tech Stack

### Frontend

- **React.js** using Vite
- **Redux** & **Redux Saga** for backend sync
- **Redux Persist** for offline data persistence
- **React Quill** with AI autocomplete
- **Progressive Web App** (PWA) implementation

### Backend

- Microservices Architecture:
- **GraphQL Server**: Real-time features (notifications, chat)
- **Express Server**: Authentication, CRUD operations

### Database

- **PostgreSQL** with Pub/Sub for real-time features

### Monitoring

- **Sentry** integration for error reporting (frontend & backend)

### DevOps & Deployment

- **AWS EC2** hosting
- **Docker** containerization
- **Nginx** as reverse proxy
- **Backend Deployment**: Docker-based deployment using GitHub Actions pipeline
![Backend CI / CD](images/backend_pipeline.png)
- **Frontend Deployment**: GitHub artifacts with GitHub Actions pipeline
![Frontend CI / CD](images/frontend_pipeline.png)

## 🏗️ Architecture Overview

![Project Achitecture](images/architecture.png)

## 🚦 Getting Started

### Prerequisites

- Node.js (v18 or later)
- Docker
- PostgreSQL

### Installation

1. Clone the repository

```bash
git clone https://github.com/omar-sarfraz/projects-listing
```

2. Install Dependencies

```bash
yarn install
```

2. Frontend

```bash
cd React_Project
cp .env-example .env # Create env file
npm run dev
```

3. Backend services

```bash
cd ..
cp .env-example .env
docker-compose up
```

## 📄 License

This project is licensed under the MIT License.
Binary file added images/architecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/backend_pipeline.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/frontend_pipeline.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 82894b4

Please sign in to comment.