{"id":23296687,"url":"https://github.com/chriswilder3/cruiseshipmanagement","last_synced_at":"2026-05-05T12:31:47.809Z","repository":{"id":268596387,"uuid":"904869709","full_name":"chriswilder3/CruiseShipManagement","owner":"chriswilder3","description":"Celestia is a Cruise Ship Management System developed as a full stack web app for voyagers and staff to manage orders, reservations, and facility usage efficiently. Built using React, Tailwindcss, and Firebase.","archived":false,"fork":false,"pushed_at":"2025-01-16T19:17:38.000Z","size":11488,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-06T19:51:07.983Z","etag":null,"topics":["cruise-ships","database","react","reactjs"],"latest_commit_sha":null,"homepage":"https://celestia-cruise-ship-management-service.vercel.app","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/chriswilder3.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":"2024-12-17T17:52:04.000Z","updated_at":"2025-01-16T19:17:40.000Z","dependencies_parsed_at":"2024-12-17T19:21:53.775Z","dependency_job_id":"255ae152-06f3-49d3-9610-e0809f350868","html_url":"https://github.com/chriswilder3/CruiseShipManagement","commit_stats":{"total_commits":16,"total_committers":1,"mean_commits":16.0,"dds":0.0,"last_synced_commit":"ce405b01e57291dfcf01b0c7a5d2f273cda6d4ac"},"previous_names":["chriswilder3/cruiseshipmanagement"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/chriswilder3/CruiseShipManagement","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chriswilder3%2FCruiseShipManagement","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chriswilder3%2FCruiseShipManagement/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chriswilder3%2FCruiseShipManagement/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chriswilder3%2FCruiseShipManagement/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chriswilder3","download_url":"https://codeload.github.com/chriswilder3/CruiseShipManagement/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chriswilder3%2FCruiseShipManagement/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32649525,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","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":["cruise-ships","database","react","reactjs"],"created_at":"2024-12-20T07:13:17.679Z","updated_at":"2026-05-05T12:31:47.792Z","avatar_url":"https://github.com/chriswilder3.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🌌 Celestia - Cruise Ship Management System  \n\nWelcome to **Celestia**, an all-in-one cruise ship management system designed to improve the onboard experience for voyagers and streamline operational workflows for staff. Built with **React**, **Express**, and **Firebase**, Celestia offers seamless automation and an intuitive interface for managing reservations, orders, and facility usage.  \n\n---\n\n## 🏛️ System Architecture  \n\nBelow is the architecture of Celestia, designed for efficient communication between the front end, back end, and database:  \n\n\u003cdiv align=\"center\"\u003e \u003cimg src=\"projectArchitectureImages/celestiaArch.png\" alt=\"Celestia Architecture\" /\u003e \u003c/div\u003e\n\n---\n\n## Deployed Site Access\n\nAccess the already deployed site at : https://celestia-cruise-ship-management-service.vercel.app\n\n## 🌟 Features  \n\n### Voyager Module  \n- **Order Services**:  \n  - Place orders for catering, beauty salon reservations, party halls, fitness centers, and movie tickets.  \n- **View Own Orders**:  \n  - Access and manage personal cart and orders.  \n\n### Guest User Module  \n- **View Services**:  \n  - Explore all services available on the cruise.  \n- **Restricted Access**:  \n  - Cannot place orders or add items to the cart.  \n  - Must wait for admin approval to be assigned a role.  \n\n### Admin Module  \n- **User Management**:  \n  - View all awaiting guests and approve them by assigning appropriate roles (Voyager, Manager, Supervisor, etc.).  \n- **Service Management**:  \n  - Add new items and update or delete existing ones.  \n- **Cart and Order View**:  \n  - Monitor his own bookings and orders(as user).  \n\n### Manager Module  \n- **View Orders Across Services**:  \n  - Access and track bookings for:  \n    - Resorts  \n    - Movie tickets  \n    - Beauty salons  \n    - Fitness centers  \n    - Party halls\n- **Cart and Order View**:  \n  - Monitor his own bookings and orders(as user).    \n\n### Head-Cook Module  \n- **Manage Catering Orders**:  \n  - View and fulfill all catering-related orders.\n- **Cart and Order View**:  \n  - Monitor his own bookings and orders(as user).  \n\n### Supervisor Module  \n- **Manage Facility and Stationery Orders**:  \n  - View and fulfill orders specific to their assigned department.  \n  - Handle requests for stationery and other supplies.\n- **Cart and Order View**:  \n  - Monitor his own bookings and orders(as user).    \n\n---\n\n## 🛠️ Tech Stack  \n\n### Frontend  \n- **React**: For building a responsive, interactive UI.  \n- **Tailwind CSS**: For sleek and modern styling.  \n- **React Router**: For seamless navigation.  \n\n### Backend  \n- **Express**: A Node.js web application framework for handling backend APIs.  \n- **Firebase Firestore**: Cloud-based database for real-time data management.  \n- **Firebase Authentication**: Secure user authentication.  \n\n### Additional Tools  \n- **React Context API**: Manage global state efficiently.  \n- **Firebase Hosting**: Host the application securely and scalably.  \n\n---\n\n## 🎯 Key Functionalities  \n\n1. **Role-Based Permissions**:  \n   - Guests can view services but cannot place orders until approved by Admin.  \n   - Voyagers can view and place orders for all services.  \n   - Roles such as Head-Cook, Supervisor, Manager, and Admin inherit Voyager permissions and have additional capabilities based on their role.  \n   - Each role has their own cart and order system to manage personal needs.  \n\n2. **Real-Time Updates**:  \n   - Firestore ensures instant updates for all user actions like reservations and order tracking.  \n\n3. **Admin Flexibility**:  \n   - Full control over user approvals, role assignments, and service management.  \n\n4. **Responsive Design**:  \n   - Optimized for all devices, from desktop to mobile.  \n\n---\n\n## 📦 Installation  \n\nTo run Celestia locally:  \n\n1. Clone the repository:  \n   ```bash\n   git clone https://github.com/chriswilder3/CruiseShipManagement\n   cd CruiseShipManagement\n   ```\n2. Install FrontEnd dependencies:\n   ```bash\n   cd FrontEnd\n   npm install\n   ```\n3. Add Firebase configuration:\n   **Create a firebase.js file in FrontEnd/src/ folder with your Firebase credentials:**\n   ```javascript\n    import {initializeApp} from 'firebase/app'\n    import { getFirestore, connectFirestoreEmulator} from 'firebase/firestore'\n    import { getAuth, connectAuthEmulator } from 'firebase/auth'\n\n    // const firebaseConfig = {\n    //    apiKey: \u003cYour-API-Key\u003e,\n    //    authDomain: \u003cYour-Auth-Domain\u003e,\n    //    projectId: \u003cYour-Project-ID\u003e,\n    //    storageBucket: \u003cYour-Storage-Bucket\u003e,\n    //    messagingSenderId: \u003cYour-Messaging-Sender-ID\u003e,\n    //    appId: \u003cYour-App-ID\u003e,\n    //    measurementId: \u003cYour-Measurement-ID\u003e\"\n    // }\n\n    const app = initializeApp(firebaseConfig)\n    const db = getFirestore(app)\n    const auth = getAuth(app)\n\n    if( process.env.NODE_ENV === \"emu\" ){\n        connectFirestoreEmulator(db,\"localhost\",\"8080\")\n        connectAuthEmulator(auth,\"localhost\",\"9099\" )\n    }\n\n    export { db, auth }\n   ```\n4. Install and set up the backend\n    ```bash\n    cd BackEnd\n    npm init\n    npm install express\n    ```\n5. Install firebase (hosting, auth, firestore ) in front end\n\n6. install firebase Admin (hosting, firestore, admin, auth) in backend\n\n7. Include firebase admin config file firebase-admin.js in BackEnd\n   with your own credential JSON file.\n\n   ```javascript\n    const admin = require('firebase-admin')\n\n    const serviceAccount = require('path/to/your/own/admin-credential/json-file')\n\n    admin.initializeApp(\n        {\n            credential : admin.credential.cert(serviceAccount),\n        }\n    )\n\n    const db = admin.firestore()\n    const auth = admin.auth()\n    // console.log(auth);\n\n    module.exports = { db, auth, admin }\n   ```\n\n8. start backend with command (w.r.t root folder)\n   ```bash\n   cd BackEnd\n   npm run start\n   ```\n9. start frontend with command (w.r.t root folder)\n   ```bash\n   cd BackEnd\n   npm run dev\n   ```\n10. Go to http://localhost:5173 to access the website\n   \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchriswilder3%2Fcruiseshipmanagement","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchriswilder3%2Fcruiseshipmanagement","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchriswilder3%2Fcruiseshipmanagement/lists"}