"Galactic Enterprise Cruises" is a futuristic space tourism API designed to offer tiered travel packages to various galactic destinations. This API serves as a gateway to explore the universe, offering tailored travel experiences for different classes of space adventurers. Whether it's a budget-friendly journey to nearby stars or a luxurious voyage to distant galaxies, our API connects users with the wonders of space travel.
The project is divided into two main components:
-
Backend:
Built with Node.js, Express, MySQL, Redis, and Swagger, the backend serves as the core of our application, managing data related to travel packages, bookings, and user interactions.
-
Frontend:
Developed using Astro, the front end provides an interactive user interface where customers can browse travel packages, make bookings, and experience the allure of space tourism.
-
Tiered Travel Packages:
Offers travel options to six different galactic destinations, with access varying by travel class – mainstream, premium, and luxury.
-
Astro Frontend:
A sleek, modern web interface that allows users to explore and book travel packages, providing a seamless user experience.
-
Docker Integration:
Ensures easy setup and deployment, encapsulating the application environment for consistent performance across different systems.
- Backend: Node.js, Express, MySQL, Redis, Swagger
- Frontend: Astro
- Containerization: Docker with Docker-Compose
Detailed setup instructions are provided to get the application running locally using Docker, facilitating a straightforward installation process.
env/ folder -- with environment variables env/.env.app and env/.env.mysql .env.redis
username, password, and database name will be identical in each file
Variable | Value |
---|---|
HOST | "0.0.0.0" |
DB_NAME | value matches (.app .db) |
DB_USER | value matches (.app .db) |
DB_PASS | value matches (.app .db) |
PORT | 3000 |
Variable | Value |
---|---|
REDIS_PORT | 6379 |
REDIS_HOST | redis |
REDIS_PASSWORD | secret value |
Variable | Value |
---|---|
MYSQL_ROOT_PASSWORD | secret value |
MYSQL_DATABASE | value matches (.app .db) |
MYSQL_USER | value matches (.app .db) |
MYSQL_PASSWORD | value matches (.app .db) |
MYSQL_HOST | mysql |
MYSQL_PORT | 3306 |
to run the docker-compose with makefile use the command below
make up # first time building and starting
make run # after changes to image or build
Connect to express API server and routes.
docker exec -it galactic_destinations_backend_1 /bin/bash
npm run dev # this was launched on container start so it should already be available
the server will listen on port 0.0.0.0 to see the output of the API routes Run the server and use 127.0.0.1:3000 in the browser
Connect to express API server and routes. run mysql and Redis
docker exec -it galactic_destinations_frontend_1 /bin/bash
npm run dev # this was launched on container start so it should already be available
the server will listen on port 0.0.0.0
to see the output of the API routes
Run the server and use 127.0.0.1:4321
in the browser
Run on cli
docker exec -it galactic_destinations_mysql_1 /bin/bash
mysql -u username -p
docker exec -it galactic_destinations_redis_1 /bin/bash
redis-cli
cd into the backend folder and run the test suite
npm run test
Usage Users can interact with the API through the frontend interface or directly via API endpoints, allowing for flexible integration with other applications or services.
Purpose This project aims to showcase the potential of modern web technologies in creating scalable and interactive applications, providing a glimpse into the future of space tourism.
Command | Description |
---|---|
make or make up |
Builds and starts the Docker Compose services. |
make status |
Displays the status of Docker Compose services. |
make build |
Builds the Docker Compose services. |
make run |
Runs the Docker Compose services in interactive mode. |
make exec |
Executes a command in the Docker Compose service. |
make stop |
Stops the Docker Compose services. |
make clean |
Removes Docker Compose containers and images. |
make deep-clean |
Removes Docker Compose containers, images, and volumes. |
Command | Description |
---|---|
npm install |
Installs dependencies for the Astro frontend. |
npm run dev |
Starts the development server for Astro. |
npm run build |
Builds the production-ready files for Astro. |
npm run start |
Starts the production server for Astro. |
npm run lint |
Runs linting checks on the Astro codebase. |
npm test |
Runs tests for the Astro frontend application. |
Command | Description |
---|---|
npm install |
Installs dependencies for the Node.js backend. |
npm run dev |
Starts the development server for the backend. |
npm run start |
Starts the production server for the backend. |
npm run lint |
Runs linting checks on the backend codebase. |
npm test |
Runs tests for the Node.js backend application. |
- Start your Node.js server and navigate to http://localhost:3000/api-docs in your browser. You should see the Swagger UI interface with your API documentation.
.
├── Makefile
├── README.md
├── backend
│ ├── Docker
│ │ └── Dockerfile
│ ├── api
│ │ └── routes
│ │ ├── destinations.js
│ │ └── routes.js
│ ├── config
│ │ ├── mysql
│ │ │ └── my.cnf
│ │ ├── redis
│ │ │ └── redis.conf
│ │ └── swaggerConfig.js
│ ├── database
│ │ ├── galactic_market_schema.sql
│ │ ├── init.sql
│ │ └── run_sql_files.sh
│ ├── datasets
│ ├── dump.rdb
│ ├── env
│ ├── make.log
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ │ ├── db.js
│ │ ├── redis.js
│ │ ├── server.js
│ │ └── utils
│ │ ├── logger.js
│ │ └── readCSV.js
│ ├── start.sh
│ └── test
│ └── api.test.js
├── docker-compose.yml
├── frontend
│ ├── Docker
│ │ └── Dockerfile
│ ├── README.md
│ ├── astro.config.mjs
│ ├── package-lock.json
│ ├── package.json
│ ├── public
│ │ └── favicon.svg
│ ├── src
│ │ ├── components
│ │ │ └── Card.astro
│ │ ├── env.d.ts
│ │ ├── layouts
│ │ │ └── Layout.astro
│ │ └── pages
│ │ └── index.astro
│ ├── start.sh
│ └── tsconfig.json
├── make.log
└── public
└── UML
24 directories, 36 files