Skip to content

ahmedoshelmy/Qwitter-Backend

 
 

Repository files navigation

image

Qwitter-Backend

Complete Backend Application implemented using Express.js, Typescript , Prisma and PostgreSQL.

Table of Contents

Features

  • User authentication and authorization (signup, login, Google Authentication)
  • Tweet creation, retrieval, update, and deletion
  • User Relations management (follow, mute, block)
  • Timeline/ For you
  • Real-time notifications
  • Real-time Chatting

Technologies Used

  • JSDoc and Swagger for API documentation
  • Zod for Schema Validation
  • Prisma as an ORM
  • Socket.io for real-time notifications and chatting
  • Azure Blob for images and videos upload
  • Nodemailer and Gmail for sending emails
  • Passport for OAuth
  • Jest and SuperTest for testing
  • Bcrypt for hashing passwords

Installation

1- Clone the repository:

git clone git@github.com:ahmedoshelmy/Qwitter-Backend.git

2- Navigate to project folder

cd Qwitter-Backend

3 - Install libraries & modules

npm install

4 - Create .env file

PORT=<your_port_number>
URL=<your_url>
HOST=<your_host>
DATABASE_URL="<your_database_url>"
NODE_ENV=development
EMAIL=<your_email>
EMAIL_SMTP_PASSWORD=<your_email_smtp_password>
GOOGLE_CLIENT_ID=<your_google_client_id>
GOOGLE_CLIENT_SECRET=<your_google_client_secret>
GOOGLE_CALLBACK_URL=<your_google_callback_url>
JWT_SECRET=<your_jwt_secret>
JWT_EXPIRES_IN=<your_jwt_expires_in>
SALT="<your_salt>"
CLIENT_SIDE=<your_client_side_url>
AZURE_CONTAINER=<your_azure_container>
AZURE_BUCKET_URL="<your_azure_bucket_url>"
AZURE_KEY="<your_azure_key>"
AZURE_ACCOUNT_NAME=<your_azure_account_name>

5- Generate Primsa Client and Migrate the schema

npm run psrisma:generate
npm run psrisma:migrate

6- Run server

npm run start

7- Generate Unit testing reports

npm run test

8- Generate functional documentation

npm run docs

Documentaion

Contributors


Ahmed Osama Helmy


Ahmed Osama Zahran


Ahmed Ibrahim


Ghaith

About

Qwitter Backend

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 99.7%
  • JavaScript 0.3%