{"id":21933165,"url":"https://github.com/link-wolf/bde","last_synced_at":"2026-04-08T22:31:02.027Z","repository":{"id":205990725,"uuid":"715552414","full_name":"Link-Wolf/bde","owner":"Link-Wolf","description":"Our first website for our student association in 42 Mulhouse","archived":false,"fork":false,"pushed_at":"2024-10-02T12:43:55.000Z","size":87901,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-22T13:27:11.185Z","etag":null,"topics":["bde","docker","javascript","nestjs","postgresql","react","typescript","web"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/Link-Wolf.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,"publiccode":null,"codemeta":null}},"created_at":"2023-11-07T11:25:12.000Z","updated_at":"2024-10-02T12:53:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"19c113c7-9944-4434-8d90-da77b5bd6a69","html_url":"https://github.com/Link-Wolf/bde","commit_stats":null,"previous_names":["link-wolf/bde"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Link-Wolf/bde","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Link-Wolf%2Fbde","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Link-Wolf%2Fbde/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Link-Wolf%2Fbde/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Link-Wolf%2Fbde/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Link-Wolf","download_url":"https://codeload.github.com/Link-Wolf/bde/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Link-Wolf%2Fbde/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31577444,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["bde","docker","javascript","nestjs","postgresql","react","typescript","web"],"created_at":"2024-11-29T00:08:42.060Z","updated_at":"2026-04-08T22:31:02.012Z","avatar_url":"https://github.com/Link-Wolf.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv id=\"top\"\u003e\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n \u003ca href=\"https://bde.42mulhouse.fr\" title=\"Go to BDE website\"\u003e\u003cimg src=\"https://img.shields.io/static/v1?label=BDE - La Fregate\u0026message=website\u0026color=BE6144\u0026logo=github\u0026style=for-the-badge\" alt=\"BDE - La Fregate - Website\"\u003e\u003c/a\u003e\n \u003ca href=\"https://en.wikipedia.org/wiki/2022\"\u003e\u003cimg src=\"https://img.shields.io/badge/Year-2022-ffad9b?style=for-the-badge\u0026color=yellow\" alt=\"Year - 2022\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.linux.org/\" title=\"Go to Linux homepage\"\u003e\u003cimg src=\"https://img.shields.io/badge/OS-linux-blue?logo=linux\u0026logoColor=white\u0026style=for-the-badge\u0026color=9E59B4\" alt=\"OS - Linux\"\u003e\u003c/a\u003e\n  \u003cbr/\u003e\n \u003ca href=\"https://nodejs.org/en\" title=\"Go to NodeJS homepage\"\u003e\u003cimg src=\"https://img.shields.io/badge/Node.js-^20.2.0-blue?logo=node.js\u0026logoColor=white\u0026style=for-the-badge\u0026color=719960\" alt=\"Package - NodeJS\"\u003e\u003c/a\u003e\n \u003ca href=\"https://react.dev/\" title=\"Go to React homepage\"\u003e\u003cimg src=\"https://img.shields.io/badge/React-^18.2.0-blue?logo=react\u0026logoColor=white\u0026style=for-the-badge\u0026color=80D1EF\" alt=\"Package - React\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.postgresql.org/\" title=\"Go to Postgresql homepage\"\u003e\u003cimg src=\"https://img.shields.io/badge/PostgreSQL-^14.8-blue?logo=postgresql\u0026logoColor=white\u0026style=for-the-badge\u0026color=3F6388\" alt=\"DB - PostgreSQL\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca\u003e\n    \u003cimg src=\"https://www.42mulhouse.fr/wp-content/uploads/2022/06/logo-42-Mulhouse-white.svg\" alt=\"Logo\" width=\"192\" height=\"80\"\u003e\n  \u003c/a\u003e\n\n  \u003ch3 align=\"center\"\u003eBDE Website\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n   \u003cem\u003eCool website isn't it ?\u003c/em\u003e\u003cbr/\u003e\n    First dockerized website of the BDE developped from scratch by \u003ca href=\"https://github.com/Link-Wolf\"\u003eLink\u003c/a\u003e \u0026 \u003ca href=\"https://github.com/sur4c1\"\u003eiCARUS\u003c/a\u003e\n    \u003cbr /\u003e \u003cbr /\u003e\n    \u003ca href=\"https://github.com/Link-Wolf/bde/-/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/Link-Wolf/bde/-/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails\u003e\n  \u003csummary style=\"font-size: 1.2em;font-weight: bold\"\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#prerequisites\"\u003ePrerequisites\u003c/a\u003e\n\t\t  \u003cul\u003e\n\t\t\t\u003cli\u003e\u003ca href=\"#docker-prerequisites\"\u003eDocker\u003c/a\u003e\u003c/li\u003e\n\t\t    \u003cli\u003e\u003ca href=\"#local-prerequisites\"\u003eLocal\u003c/a\u003e\u003c/li\u003e\n\t\t  \u003c/ul\u003e\n\t\t\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\n\t\t  \u003cul\u003e\n\t\t    \u003cli\u003e\u003ca href=\"#docker-installation\"\u003eDocker\u003c/a\u003e\u003c/li\u003e\n\t\t\t\u003cli\u003e\u003ca href=\"#local-installation\"\u003eLocal\u003c/a\u003e\u003c/li\u003e\n\t\t  \u003c/ul\u003e\n\t\t\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#todo\"\u003eTODO\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n---\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n\n## About The Project 🎯\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca\u003e\n    \u003cimg src=\"assets/HomePage.png\" alt=\"home page of the website\"\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\u003c/br\u003e\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- GETTING STARTED --\u003e\n\n## Getting Started 🏃\n\nIt's our beloved website so please be kind with it, even if it's not perfect, it's our first website and we are proud of it.\nThe few next parts will be split in two parts, the first one for a dockerized version and the second one for a non-dockerized version.\n\n### Prerequisites\n\n#### Docker Prequisites\n\nHaving Docker installed on your machine is not only a must have but also the only thing you need to run the website, if you don't have it, you can install it by following the instructions on the [official website](https://docs.docker.com/get-docker/).\n\n#### Local Prerequisites\n\nIf you don't want to use docker, or prefer to launch it locally to make changes in real time for example, you will need to install the following packages on your machine:\n\n-   [NodeJS](https://nodejs.org/en/)\n-   [React](https://react.dev/)\n-   [PostgreSQL](https://www.postgresql.org/)\n-   [Redis](https://redis.io/)\n\n### Installation\n\n**❗️ You'll need to copy the .template.env files as .env files and fill all the values ❗️**\n\n#### Docker Installation\n\n1. Clone the repo\n\n    ```sh\n    $\u003e git clone git@github.com:Link-Wolf/bde.git\n    ```\n\n2. Start it using docker-compose\n\n    ```sh\n    $\u003e cd bde-website\n    $\u003e docker-compose up --build\n    ```\n\n    And that's it, when it's up you can access the website on your browser at the following address: http://localhost:3000\n\n#### Local Installation\n\nYou'll first have to create the database within PostgreSQL:\n\n```sh\n\t$\u003e psql postgres\n\t=# CREATE DATABASE [your .env database name];\n\t=# CREATE USER [your .env user name] WITH PASSWORD '[your .env password]';\n\t=# \\q\n```\n\nNow you will need to launch the server and the client separately, here are the steps to do so:\n\n1. Clone the repo\n\n    ```sh\n    $\u003e git clone git@github.com:Link-Wolf/bde.git\n    ```\n\n2. Launch Redis in a terminal\n\n    ```sh\n    $\u003e cd bde-website\n    $\u003e redis-server\n    ```\n\n3. Launch the server in a **second** terminal\n\n    ```sh\n    $\u003e cd bde-website/server\n    $\u003e npm run start\n    ```\n\n    You can also use `npm run start:dev` to launch the server in dev mode, it will restart automatically when you make changes to the code.\n    \u003cbr/\u003e\n\n4. Launch the client in a **third** terminal\n\n    ```sh\n    $\u003e cd bde-website/client\n    $\u003e npm start\n    ```\n\nBe sure to launch the server before the client and to have Redis running in the background, otherwise you will have errors.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- USAGE EXAMPLES --\u003e\n\n## Usage 🚀\n\nBecause we admit that you're not that old and/or disconnected, first we'll just list the main features currently available\n\n-   Connection/Registration by using the 42 API\n-   Available and current events, with subscription system\n-   Window shop\n    -   Show the different products available and their informations\n        -   Stock\n        -   Price\n        -   Product composition\n        -   Photos\n-   Profile page with:\n    -   Some of your informations\n    -   Subscribed events\n    -   And we once planned to add your potentials receipts for example but we never did it\n-   Contact page to send a message to the BDE\n-   A Ping Pong registration system, to submit the games played in the Cantina, with a ranking system\n-   A donation system using Paypal\n\nWe won't explain how to use the website step by step, it's pretty intuitive, but we will explain how to use the admin panel, which may not be that intuitive(?)\n\n**To access the admin panel, you need to be logged in with an account that has sufficient `clearance`**\n\n\u003cimg align=\"right\" width=\"auto\" height=\"1000\" src=\"assets/AdminPage.png\"\u003e\n\n-   List all the registered users\n-   Sort them ascending/descending by:\n    -   Login\n    -   Name\n    -   Surname\n    -   Registration date\n    -   Last connection date\n    -   Authorization level\n-   Ping Pong Game management\n    -   List all the games submitted\n    -   Delete a game\n    -   Sort them ascending/descending by:\n        -   Date\n        -   Score\n    -   Filter them by login\n-   Event management\n    -   List all the events\n    -   Delete an event\n    -   Modification of an event\n    -   Creation of an event\n        -   Name\n        -   Begin date\n        -   End date (or not)\n        -   End of subscription date (or not), must be before the end date\n        -   Available date, when the event will be visible on the website\n        -   Description\n        -   Price\n        -   Price for premium members (see below \"`premium` members\")\n        -   Number of slots (-42 if there is no limit)\n        -   Number of slots for premium members (see below \"`premium` members\")\n        -   Place\n        -   A picture to illustrate the event\n        -   Checkbox for some infos\n            -   Is the event outside of 42\n            -   Is the event sponsored (we hope, one day)\n            -   Is there any consumption\n            -   Is it available for the piscineux\n-   Subscriptions management\n    -   List all the subscriptions for the given event, showing\n        -   The login\n        -   The price payed\n        -   The date\n    -   Delete a subscription\n    -   Force subscribe a user to an event\n-   Products management\n    -   List all the products\n    -   Delete a product\n    -   Modification of a product\n    -   Creation of a product\n        -   Name\n        -   Description\n        -   Price\n        -   A picture to illustrate the product\n        -   The total stock for this product AND the stock for each size\n            -   **We didn't manage to do it properly or manage to connect the website to the google sheet we used to manage our stocks, so it has to be edited for each sale, and if the total stock isn't equal to the sum of all the size's stock, we admit it's a unique size (like the caps). It's really dirty**\n-   Logs\n    -   For all the logs created by the backend, we only display the warning and errors\n    -   Filter them by:\n        -   Warn\n        -   Error\n        -   Admin (if the log was created by an admin action)\n        -   Login\n        -   Masquing or not the logs created by the admin navigation, because there is specific logs and check by accessing each admin page\n    -   Sort them ascending/descending by:\n        -   Date\n-   Admin management\n    -   List all admins\n    -   Demote an admin\n    -   Promote a user to admin\n    -   Bequeath our powers to someone else\n        -   The idea here is that the BDE Captain is the only one (with the webmaster) to be able to access this page, manage his admins, but since he can't demote himself, he can bequeath his Captain powers to someone else, and then demote himself\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- ROADMAP --\u003e\n\n## TODO (and TOFIX) 🚧\n\nUltimately and honnestly, the website would deserve to be entirely rewrite from scratch, but we (Link \u0026 iCARUS) don't have the time to do so, so unless someone wants to do it, we will keep it as it is. And in this case, there are a lot of things to fix and to add, so here is a list of a few things that we would have liked to do:\n\n-   Add a Club page : List of all clubs/commisions, with their description, their members, their events, etc.\n-   Upgrade the Ping Pong game submition system, so both players have to validate the score and the winner to avoid cheating\n-   Add a system of seasons for the Ping Pong turnament, maybe with rewards\n-   Either implements or remove all traces of the `premium` members, which was a thing we had in mind once, where students could pay like a cotisation to have access to some premium features, reductions, access to limited slots events, etc., but we never had the time and the good ideas to implement it properly\n-   Improve the Products List design on Home page, so it's easier to add new products in the future\n-   Adjust the CGU/CGV according to any changes (and maybe just..adjust it because it could be better? But I -Link- wrote them myself with lot of love so I'm not sure I want to change them myself)\n-   Fix the filters button that apply a blur effect on the background, to fit the screen\n-   Change the contact system that currently uses an extern API from client-side, to a server-side solution to avoid spam\n\n#### On Admin side specifically\n\n-   Add a way to add, edit and remove clubs/commissions and maybe add a manager for each one who can edit its own club/commission\n-   Pages with multiple forms (Events, Products) aren't CSSed properly.\n-   Globally, admin pages are either not CSSed on mobile, or not enough, so it's not really user friendly and/or responsive\n-   Admin side pannel doesn't extend to the bottom if the page content is taller than the screen and if you scroll down\n\nSee the [open issues](https://github.com/Link-Wolf/bde/-/issues) for a full list of proposed features (and known issues).\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flink-wolf%2Fbde","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flink-wolf%2Fbde","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flink-wolf%2Fbde/lists"}