Coder Social home page Coder Social logo

zstenger93 / transcendence Goto Github PK

View Code? Open in Web Editor NEW
14.0 2.0 4.0 243.93 MB

This project is about creating a SPA with a playable multiplayer pong game, chat, profiles, leaderboard etc.

Dockerfile 0.56% Python 30.72% Shell 0.94% HTML 1.69% JavaScript 65.18% CSS 0.70% Makefile 0.22%
42 42born2code 42heilbronn docker postgresql transcendence django javascript docker-compose docker-container

transcendence's Introduction

๐Ÿ“– TRANSCENDENCE

A group project to create a fully functional website with front and backend.
It will be a single-page application


Menu

MindMap

Setup

CI/CD Pipeline

DataBase

Frontend

Backend

Game

Chat

Resources

TODO

Modules Used


MindMap

Git Flow

Master <--- โœ… --- Dev <--- โœ… --- Microservices
.....|............................................................|
.....|_______________ โŒ ______________|

General Explanation

  • Base of the project
    • PostgreSQL
    • Django backend
    • Rest API to connect back and frontend
    • Frontend with React
    • Nginx proxy
  • Backend
    • Django
  • Frontend
    • React app

Setup

  • docker-compose.dev.yaml (later)

  • docker-compose.yaml

    • backend
      • each microservice is an app
    • PostgreSQL database
    • frontend
    • nginx proxy
  • images (not customized yet for front and back)

    • Installs python and other required packages
    • Installs and sets venv
    • Installs django
    • Echoes the venv activation to bashrc
    • Copies the starting script to the image
    • Exposes the port
    • Entrypoint (not always, depends because some things wont work directly from dockerfile)
    • CMD to run

Pipeline

  • .github folder
    • workflows
      • workflow_name.yaml
  • workflow jobs
    • testing
      • need to upload artifacts
    • building
      • need to download the uploaded artifacts
      • ceraful with the correct path
    • deploying
      • in case of react project, in github settings directory should be changed to /doc instead of root

DataBase

postgreSQL


Frontend

React Tailwind ThreeJS

  • Multi language support

  • Extra browser support

  • Multiple device support

  • Fullscreen mode for games except on IOS

  • root / Login

    • Register with username email and password to the site
    • Login with your username and password
    • Login via 42 auth
  • Home

    • Readme styled (kinda)
  • Game & Watch

    • Pong
      • Original
      • AI Opponent
      • Multiplayer
      • 3D Pong
    • Future game
  • Chat

    • Channels
    • Online ppl
    • Image Sharing
  • Profile

    • Basic details
    • Friends
    • Match history
  • About Us

  • Logout


Backend

  • Microservices (kind of)
    • Authentication service
    • Game
      • Normal mode
      • Balanced matchmaking
      • Optimized responsiveness
      • Gamplay statistics
      • Secure data storing
    • Extra game
    • AI opponent
    • Acessibility features
      • More browser support
      • Multiple language support
    • Security tools
    • Chat
      • Direct messages
      • Access to profiles
      • Sending invite to play
      • Let players know who is next in line
    • Statistics
      • Win rate
      • Score
      • Match amount against players
      • etc

Original Game

PONG

  • Extra Pong versions implemented:
    • AI Pong
    • 3D Pong

Chat


Resources

our braincells


TODO

Done: โœ… Not done: โŒ

Plan everything as a microservice โŒ

Basic structure โœ…

Backend structure setup โœ…

First mindmap โœ…

Docker files for services โœ…

Hashed passwords โœ…

Using OAuth system from 42 โœ…

CI/CD pipeline setup โœ…

Deploying to github pages โœ…

Setting unique username โœ…

Uploading an avatar for user โœ…

Option to enable 2FA auth โœ…

Friend list and their status โœ…

User stats of wins, losses etc.. โŒ

Match history from games โŒ

User being able to create private channels โœ…

Be able to block and unblock other users โœ…

Able to invite other users to play a game โŒ

Accessing other users profile โœ…

Playing live games on the site โŒ

Matchmaking system โŒ

Faithful to the original pong game โœ…

Custom options for the game โœ…

The game must be responsive โœ…

Modules Used

16 Major module

11 Minor module

  • Web
    • Major module: Use a framework as backend โœ…
    • Minor module: Use a front-end framework or toolkit โœ… โ“
    • Minor module: Use a database for the backend โœ…
    • Major module: Store the score of a tournament in the Blockchain โŒ
  • User Management
    • Major module: Standard user management, authentication, users across tournaments โŒ
    • Major module: Implementing a remote authentication โœ…
  • Gameplay and User Experience
    • Major module: Remote players โœ…
    • Major module: Multiplayer (more than 2) โœ…
    • Major module: Add Another Game with User History and Matchmaking โŒ
    • Minor module: Game customization options โœ…
    • Major module: Live chat โœ…
  • AI-Algo
    • Major module: Introduce an AI opponent โœ…
    • Minor module: User and game stats dashboard โŒ
  • Cybersecurity
    • Major module: Implement WAF/ModSecurity with Hardened Configuration and HashiCorp Vault for Secrets Management โŒ
    • Minor module: GDPR Compliance Options with User Anonymization, Local Data Management, and Account Deletion โŒ
    • Major module: Implement Two-Factor Authentication (2FA) and JWT โœ…
  • Devops
    • Major module: Infrastructure Setup for Log Management โŒ
    • Minor module: Monitoring system โœ…
    • Major module: Designing the Backend as Microservices โŒ
  • Graphics
    • Major module: Use advanced 3D techniques โœ…
  • Accessibility
    • Minor module: Support more devices โŒ โœ…
    • Minor module: Expanding browser compatibility โœ…
    • Minor module: Multiple language support โœ…
    • Minor module: Add accessibility for visually impaired users โŒ
    • Minor module: Server-side rendering (SSR) integration โŒ
  • Object Oriented
    • Major module: Replacing Basic Pong with Server-Side Pong and Implementing an API โŒ
    • Major module: Enabling Pong Gameplay via CLI against Web Users with API Integration โŒ

transcendence's People

Contributors

azersd avatar jamshidbek2000 avatar kvebers avatar lacusch avatar zstenger93 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

transcendence's Issues

Major module: Infrastructure Setup with ELK (Elasticsearch, Logstash, Kibana) for Log Management.

In this major module, the objective is to establish a robust infrastructure for log
management and analysis using the ELK stack (Elasticsearch, Logstash, Kibana).
Key features and goals include:

  • Deploy Elasticsearch to efficiently store and index log data, making it easily
    searchable and accessible.
  • Configure Logstash to collect, process, and transform log data from various
    sources and send it to Elasticsearch.
  • Set up Kibana for visualizing log data, creating dashboards, and generating
    insights from log events.
  • Define data retention and archiving policies to manage the storage of log data
    effectively.
  • Implement security measures to protect log data and access to the ELK stack
    components.

PDf link

Minor module: Monitoring system.

In this minor module, the objective is to set up a comprehensive monitoring system
using Prometheus and Grafana . Key features and goals include:

  • Deploy Prometheus as the monitoring and alerting toolkit to collect metrics
    and monitor the health and performance of various system components.
  • #160
    services, databases, and infrastructure components.
  • #243
  • #261
  • Ensure proper data retention and storage strategies for historical metrics data.
  • Implement secure authentication and access control mechanisms for Grafana to protect sensitive monitoring data.
    Pdf link

Current language in the url

Need to add the current language to the url and changing it dynamically depending on the current language but the routes are tricky..

Major module: Live Chat.

  • Backend implementation
  • Connected to frontend
  • General channel
  • Online user list
  • Option to interact with online users
  • Private messages
  • Remove test chat on reload

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.