{"id":18418936,"url":"https://github.com/trobert42/transcendence","last_synced_at":"2026-05-07T02:37:55.272Z","repository":{"id":224191253,"uuid":"762416246","full_name":"trobert42/transcendence","owner":"trobert42","description":"A website that includes a Pong game and a real-time chat","archived":false,"fork":false,"pushed_at":"2024-02-26T18:44:23.000Z","size":26223,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-20T09:47:09.518Z","etag":null,"topics":["0auth2","docker","docker-compose","jwt-authentication","nestjs-backend","postgresql","prisma","react-front-end","rest-api","typescript","websocket"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/trobert42.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-02-23T18:27:48.000Z","updated_at":"2024-03-19T22:10:02.000Z","dependencies_parsed_at":"2024-02-24T12:40:02.948Z","dependency_job_id":null,"html_url":"https://github.com/trobert42/transcendence","commit_stats":null,"previous_names":["trobert42/transcendence"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/trobert42/transcendence","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trobert42%2Ftranscendence","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trobert42%2Ftranscendence/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trobert42%2Ftranscendence/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trobert42%2Ftranscendence/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trobert42","download_url":"https://codeload.github.com/trobert42/transcendence/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trobert42%2Ftranscendence/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32720724,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-07T02:14:30.463Z","status":"ssl_error","status_checked_at":"2026-05-07T02:14:29.405Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["0auth2","docker","docker-compose","jwt-authentication","nestjs-backend","postgresql","prisma","react-front-end","rest-api","typescript","websocket"],"created_at":"2024-11-06T04:15:03.521Z","updated_at":"2026-05-07T02:37:55.256Z","avatar_url":"https://github.com/trobert42.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Website with a pong game and real-time chat\n\nIt is the final project of the common core, time to learn some web stuff !\n\nThe project involves creating a website featuring an interactive Pong game and a matchmaking system. Client users can create accounts, log in to chat and play.\n\n\n|    Project Name    |                                                                       ft_transcendence                                                                      |\n| :----------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    Description     |       A website that runs an online multiplayer pong, a real-time chat and a user management system                                       |\n|    Technologies    |  \u003cimg alt=\"React\" src=\"https://img.shields.io/badge/React-20232a.svg?logo=react\u0026logoColor=%2361DAFB\"\u003e \u003cimg alt=\"Nest\" src=\"https://img.shields.io/badge/nestjs-%23E0234E.svg?logo=nestjs\u0026logoColor=white\"\u003e \u003cimg alt=\"Docker\" src=\"https://img.shields.io/badge/docker-%230db7ed.svg?logo=docker\u0026logoColor=white\"\u003e \u003cimg alt=\"PostgreSQL\" src =\"https://img.shields.io/badge/PostgreSQL-316192.svg?logo=postgresql\u0026logoColor=white\"\u003e \u003cimg alt=\"Prisma\" src=\"https://img.shields.io/badge/Prisma-3982CE?logo=Prisma\u0026logoColor=white\"\u003e |\n\n## Features \n- User's features include profile data, settings, friend lists, private chats, custom avatars, game stats, and match history.\n- Authentication management is handled using the 42 API (OAuth2) and Google Authenticator for 2FA.\n- Database management employs an ORM (Object Relational Mapping), Prisma, connecting the server to a PostgreSQL database, ensuring password security and protection against injections via POST forms.\n- The frontend built using React, on port __3333__.\n- The Backend development utilizes NestJS, providing a project architecture and tools for creating a REST API to enable coherent and structured communication between systems via HTTP. On port __3000__.\n- It is Docker-compatible using docker-compose.\n- Chat channel management involves websockets programming, supporting both public and private channels.\n- The website is one-page and responsive.\n\n\n## Prerequisite\n\nTo run the project, you have to install __docker-compose and docker__. You need to rename \"example.env\" to \".env\" and setup the file __.env with your credentials__ and __42 API credentials__.\n```bash\n  gcl https://github.com/trobert42/transcendence.git\n  cd transcendence\n  mv example.env .env\n  code .env #or vi .env\n```\n\nYou have to put a password for the jwt secret and for the refresh jwt secret. You need also to put your __42 API credentials__, if you don't it won't work.\n```bash\n...\nJWT_SECRET=\"\"\nJWT_REFRESH_SECRET=\"\"\nAPI_42_UID=\"\"\nAPI_42_PWD=\"\"\n...\n```\n\n## Usage\n```bash\n  make\n```\nWhen the containers are done building up and are running, you go to your chrome browser (firefox also works) and write on the URL bar \"localhost:3000\" to access to the application.\n\n## Screenshots\nHere are the ideas we gathered and drew on Figma:\n![](https://github.com/trobert42/transcendence/blob/main/transcendence_figma.png)\n\nAnd look how the website ended up ! We succeed to realize what we wanted to display.\n![](https://github.com/trobert42/transcendence/blob/main/transcendence_clip.gif)\n\n## 💬\nBig thanks to Antoine, Pierre, Elsie and Cyril! We ended the final project together, we can be proud :D\nIt was a wonderful group experience. I think we gained valuable experience in collaboration, problem-solving, and technical skills development. I really feel a sense of accomplishment and satisfaction in seeing our project come to fruition despite the challenges we faced along the way !\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrobert42%2Ftranscendence","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrobert42%2Ftranscendence","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrobert42%2Ftranscendence/lists"}