From c8fad34299e460afd6d6ed9213eaa5363f22a9b6 Mon Sep 17 00:00:00 2001 From: Isalyne LLINARES--RAMES Date: Mon, 26 Jan 2026 18:13:36 +0100 Subject: [PATCH 1/4] fix: update installation documentation fix: update readme fix : readme --- README.md | 43 ++++++++++++++++++++++++++++-------- bun.lockb | Bin 238266 -> 242898 bytes firebase.json | 8 +++---- functions/package-lock.json | 2 ++ serviceapi-swagger/.empty | 0 5 files changed, 40 insertions(+), 13 deletions(-) create mode 100644 serviceapi-swagger/.empty diff --git a/README.md b/README.md index 72de387d..73d1e07b 100644 --- a/README.md +++ b/README.md @@ -44,23 +44,48 @@ React guidelines: ### Requirements -- One firebase project for **`open planner`**. +- One Firebase project for **`OpenPlanner`** on the Blaze plan. - Node.js **20+** - [Bun.js](https://bun.js.org/) as a build tool ### Installation -1. Create a **`.env`** with **`.env.example`** as a template. -2. Create a web app in your firebase project for **`conference hall`** and **`open planner`**. then copy the config and fill **`.env`** with it. -3. Use [bun.sh](https://bun.sh/) to install dependencies and build the project: `bun install` +1. Create a `.env` from `.env.example`. Do the same for the `.env` files in `functions` . +2. In your Firebase project, create a **web app** with Firebase Hosting named `openplanner`. Copy the generated config and populate `.env`. + For the API URL, create a **Function** named `api` and copy its trigger URL into the env file. +3. Create the following **web app**, each with its own Hosting site (replace `X` with your suffix): + - API: Hosting site `apiopenplannerX` + - ConferenceCenter: Hosting site `conferencecenterrX` + - ServiceApi: Hosting site `serviceapiX` +4. Update `firebase.json` so the `site` value matches the correct Hosting site name for the target you are deploying. +5. Install dependencies with Bun: `bun install`. Inside OpenPlanner's firebase project: -1. Enable Authentication with email/pwd in console.firebase.google.com -2. In the Authentication parameters, "User actions", disable the "Protection against enumeration of e-mail addresses (recommended)" option -3. Enable Storage, with rules in test or prod (whatever) -4. Set the hosting config for the website using the firebase CLI: `firebase target:apply hosting conferencecenterr dist` -5. Set the hosting config for the API (swagger) `firebase target:apply hosting apiopenplanner api-swagger` +1. Enable Authentication with email/password (Authentication > Sign-in method > Email/Password > Enable). +2. In Authentication settings, under User actions, disable “Protection against email enumeration (recommended)”. +3. Create Storage (use test or prod rules as needed). +4. Create a Firestore database (default mode). +5. Log in and select the Firebase project in your terminal: + +``` +firebase login +firebase use openplanner +``` + +6. Configure hosting targets with the Firebase CLI (adjust names to your actual Hosting sites): + +``` +firebase target:apply hosting conferencecenterrX dist +firebase target:apply hosting apiopenplannerX api-swagger +firebase target:apply hosting serviceapiX serviceapi-swagger +``` + +7. Deploy: `firebase deploy`. + +8. Run frontend app : `npm run start`. Your app is available on `http://localhost:3000/` . + +9. To sign in to the app, create a user in Firebase under Authentication > Users. ### Development diff --git a/bun.lockb b/bun.lockb index ee87d5b60e9f2343f8d108e216a58c2ad4fe4a85..b06a4fecf146dea6c840f8d19afd1864cce84ff8 100755 GIT binary patch delta 7691 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 delta 6632 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 Date: Tue, 27 Jan 2026 16:07:34 +0100 Subject: [PATCH 2/4] use firebaserc file fix readme fix readme --- .firebaserc.example | 10 +++++----- README.md | 16 ++++++++-------- firebase.json | 6 +++--- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.firebaserc.example b/.firebaserc.example index d80d27f1..43e110fb 100644 --- a/.firebaserc.example +++ b/.firebaserc.example @@ -1,18 +1,18 @@ { "projects": { - "default": "conferencecenterr" + "default": "openplanner" }, "targets": { - "conferencecenterr": { + "openplanner": { "hosting": { "conferencecenterr": [ - "conferencecenterr" + "conferencecenterrX" ], "apiopenplanner": [ - "apiopenplanner" + "apiopenplannerX" ], "serviceapi": [ - "serviceapi" + "serviceapiX" ] } } diff --git a/README.md b/README.md index 73d1e07b..d7c5aef4 100644 --- a/README.md +++ b/README.md @@ -51,13 +51,13 @@ React guidelines: ### Installation 1. Create a `.env` from `.env.example`. Do the same for the `.env` files in `functions` . -2. In your Firebase project, create a **web app** with Firebase Hosting named `openplanner`. Copy the generated config and populate `.env`. +2. In your Firebase project, create a **Web App** named `openplanner` to obtain the Firebase config. Copy the generated config and populate `.env`. For the API URL, create a **Function** named `api` and copy its trigger URL into the env file. -3. Create the following **web app**, each with its own Hosting site (replace `X` with your suffix): +3. In your Firebase project, create the following **Web App** (replace `X` with your suffix): - API: Hosting site `apiopenplannerX` - ConferenceCenter: Hosting site `conferencecenterrX` - ServiceApi: Hosting site `serviceapiX` -4. Update `firebase.json` so the `site` value matches the correct Hosting site name for the target you are deploying. +4. Copy `.firebaserc.example` to `.firebaserc` and set your Firebase project values. Targets are resolved via `firebase target:apply`, no need to hardcode Hosting target name ids in `firebase.json`. 5. Install dependencies with Bun: `bun install`. Inside OpenPlanner's firebase project: @@ -73,17 +73,17 @@ firebase login firebase use openplanner ``` -6. Configure hosting targets with the Firebase CLI (adjust names to your actual Hosting sites): +6. Configure hosting targets with the Firebase CLI (replace X with your actual target suffix): ``` -firebase target:apply hosting conferencecenterrX dist -firebase target:apply hosting apiopenplannerX api-swagger -firebase target:apply hosting serviceapiX serviceapi-swagger +firebase target:apply hosting conferencecenterr conferencecenterrX +firebase target:apply hosting apiopenplanner apiopenplannerX +firebase target:apply hosting serviceapi serviceapiX ``` 7. Deploy: `firebase deploy`. -8. Run frontend app : `npm run start`. Your app is available on `http://localhost:3000/` . +8. Run frontend app: `npm run start`. Your app is available on `http://localhost:3000/`. 9. To sign in to the app, create a user in Firebase under Authentication > Users. diff --git a/firebase.json b/firebase.json index 9d225576..f6e19066 100644 --- a/firebase.json +++ b/firebase.json @@ -5,7 +5,7 @@ }, "hosting": [ { - "site": "conferencecenterr2", + "target": "conferencecenterr", "public": "dist", "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], "rewrites": [ @@ -30,7 +30,7 @@ ] }, { - "site": "apiopenplanner2", + "target": "apiopenplanner", "public": "api-swagger", "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], "rewrites": [ @@ -44,7 +44,7 @@ ] }, { - "site": "serviceapi2", + "target": "serviceapi", "public": "serviceapi-swagger", "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], "rewrites": [ From 64003424bc741f3a889e25343435095be712c4a0 Mon Sep 17 00:00:00 2001 From: Isalyne LLINARES--RAMES Date: Sun, 8 Feb 2026 15:02:30 +0100 Subject: [PATCH 3/4] fix:update readme --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d7c5aef4..55a19595 100644 --- a/README.md +++ b/README.md @@ -51,8 +51,7 @@ React guidelines: ### Installation 1. Create a `.env` from `.env.example`. Do the same for the `.env` files in `functions` . -2. In your Firebase project, create a **Web App** named `openplanner` to obtain the Firebase config. Copy the generated config and populate `.env`. - For the API URL, create a **Function** named `api` and copy its trigger URL into the env file. +2. In your Firebase project, create a **Web App** named `openplanner` ssociated with the default hosting to obtain the Firebase config. Copy the generated config and populate `.env`. 3. In your Firebase project, create the following **Web App** (replace `X` with your suffix): - API: Hosting site `apiopenplannerX` - ConferenceCenter: Hosting site `conferencecenterrX` @@ -83,9 +82,11 @@ firebase target:apply hosting serviceapi serviceapiX 7. Deploy: `firebase deploy`. -8. Run frontend app: `npm run start`. Your app is available on `http://localhost:3000/`. +8. Copy the URL of the created API function into the .env file. -9. To sign in to the app, create a user in Firebase under Authentication > Users. +9. Run frontend app: `npm run start`. Your app is available on `http://localhost:3000/`. + +10. To sign in to the app, create a user in Firebase under Authentication > Users. ### Development From 15998f2a8448e329574f6587377c7a69468e880b Mon Sep 17 00:00:00 2001 From: Isalyne LLINARES--RAMES Date: Sun, 8 Feb 2026 15:37:36 +0100 Subject: [PATCH 4/4] fix:update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 55a19595..48078102 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ React guidelines: ### Installation 1. Create a `.env` from `.env.example`. Do the same for the `.env` files in `functions` . -2. In your Firebase project, create a **Web App** named `openplanner` ssociated with the default hosting to obtain the Firebase config. Copy the generated config and populate `.env`. +2. In your Firebase project, create a **Web App** named `openplanner` associated with the default hosting to obtain the Firebase config. Copy the generated config and populate `.env`. 3. In your Firebase project, create the following **Web App** (replace `X` with your suffix): - API: Hosting site `apiopenplannerX` - ConferenceCenter: Hosting site `conferencecenterrX`