Skip to content

ggjulio/ft_transcendence

 
 

Repository files navigation

CI

ft_transcendence

getting started

Download the repo :

git clone https://github.com/Working-From-Home/ft_transcendence.git && cd ft_transcendence

Create a .env file, template example:

ACCESS_TOKEN_SECRET=my_secret
# expressed in seconds or a string describing a time span zeit/ms. Eg: 60, "2 days", "10h", "7d"
ACCESS_TOKEN_EXPIRATION=7d

# Must change thoses two variables BEFORE BUILD AND RUN if
# running on 42's linux dump.
# Type the command `id` to get your `uid` and `gid`)
# Also it only works ouside `NFS`, like `/goinfre` or `/tmp`,
# thus, it doesn't works inside `/sgoinfre`, or your home `~/`.
# (PS: pretty useless because docker rootless set "random" uid:gid)
HOST_UID=1000
HOST_GID=1000

HOSTNAME=e2r10p17
FRONTEND_PORT=8080
# localhost can be replaced by the hostname or ip of the computer to
# make the website available from others computers.
# example: http://e2r5p13:3000 or http://10.05.155.14:3000
BACKEND_SERVER_URI=http://localhost:3000

# the path must always be [host]:[frontend-port]/signup/oauth
OAUTH_REDIRECT_URI=http://localhost:8080/signup/oauth

# Either development or production
NODE_ENV=development

# Create an app to get some credentials -> https://profile.intra.42.fr/oauth/applications/new
# must feed valid 42 api credentials-> https://api.intra.42.fr/apidoc/guides/getting_started
FORTY_TWO_CLIENT_ID=
FORTY_TWO_SECRET=

# Create google oauth2 credentials here -> https://console.cloud.google.com/apis/credentials
GOOGLE_CLIENT_ID=
GOOGLE_SECRET=

# Database settings
POSTGRES_PORT=5432
POSTGRES_USER=pong
POSTGRES_PASSWORD=qwerty
POSTGRES_DATABASE=pong

#PgAdmin container
[email protected]
PGADMIN_DEFAULT_PASSWORD=qwerty

Then build and run all services :

docker-compose up --build

Then to either run tests, use vue/nest cli, install packages, or use node, open a new zsh in one of the container :

docker-compose exec frontend zsh
docker-compose exec backend zsh

Setup 42 oAuth

  • Register an app -> https://profile.intra.42.fr/oauth/applications/new
    • Name the app.
    • Set the redirect uri (the value of OAUTH_REDIRECT_URI from .env)
  • Copy paste uid and secret in their respective variables inside the .env file.
    • FORTY_TWO_CLIENT_ID
    • FORTY_TWO_SECRET

Setup Google oAuth

  • Create an Oauth client id here -> https://console.cloud.google.com/apis/credentials
    • Application type -> Web application
    • Name the app.
    • Set the authorised redirect uri (the value of OAUTH_REDIRECT_URI from .env)
  • Copy paste uid and secret in their respective variables inside the .env file.
    • GOOGLE_CLIENT_ID
    • GOOGLE_SECRET

Access to ft_pong DB from pgAdmin UI

  • open: http://localhost:8081/
  • Use pgAdmin credentials from .env file (PGADMIN_DEFAULT_EMAIL and PGADMIN_DEFAULT_PASSWORD)
  • create/add a new server
    • Give it a name
    • Open the Connection panel:
      • Host : The docker-compose service name of our database ( in our case postgres)
      • Port : The value of POSTGRES_PORT in the .env file (default port is 5432)
      • Username : The value of POSTGRES_USER in the .env file
      • Password : The value of POSTGRES_PASSWORD in the .env file
    • Hit Save and voila.

Setup debug for backend in vscode

cd backend
mkdir -p .vscode && touch .vscode/launch.json

copy paste this into lauch.json :

{
	"configurations": [
		{
			"name": "Backend",
			"type": "node",
			"request": "attach",
			"restart": true,
			"port": 9229,
			"sourceMaps": true,
			"localRoot": "${workspaceFolder}/backend/dist",
			"remoteRoot": "/app/dist",
			"outFiles": ["${workspaceFolder}/backend/dist/**/**.js"],
			"skipFiles": ["<node_internals>/**/*.js"],
		},
	]
}

Also, variable DEBUG=* can be uncommented in docker-compose.yaml to get more logs

Links

access our beautiful website
PgAdmin (an ui for postgres)
openapi design first

(Render better in stoplight elements) (Or in stoplight studio https://stoplight.io/studio )

Backend rest api
proxy/mock backend rest api
access the swagger code first (remove ? it cause dependabot warning and not really useful for planing routes)
access compodoc (just for testing how it works, maybe useless for api endpoints because of swagger)

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 50.5%
  • Vue 47.0%
  • SCSS 1.5%
  • Other 1.0%