Giter Club home page Giter Club logo

galactic_market's Introduction

galactic_destinations

Project Overview: Galactic Enterprise Cruises API

Introduction

"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.

Project Structure

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.

Features

  • 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.

Technical Stack

  • Backend: Node.js, Express, MySQL, Redis, Swagger
  • Frontend: Astro
  • Containerization: Docker with Docker-Compose

Installation and Setup

Detailed setup instructions are provided to get the application running locally using Docker, facilitating a straightforward installation process.

Step 1: Create Environmental Variable files for Backend Environment


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


Node Application Environment Variables (.env.app)

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

Redis Environment Variables (.env.redis)

Variable Value
REDIS_PORT 6379
REDIS_HOST redis
REDIS_PASSWORD secret value

MySQL Database Environment Variables (.env.mysql)

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

Step 2: Run Docker with the following command

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

Command to run backend terminal interactively

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

Command to run frontend terminal interactively

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

Command to log the MySQL database

Run on cli

docker exec -it galactic_destinations_mysql_1 /bin/bash
mysql -u username -p

Command to log into the Redis database

docker exec -it galactic_destinations_redis_1 /bin/bash
redis-cli

Command to run Unittest for the backend

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.

Makefile Command Documentation to run Docker-Compose

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.

Astro Frontend Application Command Documentation

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.

Node Backend Application Command Documentation

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.

Swagger Documentation

View Documentation:

  • 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.

Directory File Tree

.
├── 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

galactic_market's People

Contributors

ckcarr avatar

Watchers

 avatar

galactic_market's Issues

Create Design Documents Folder in root

directory named
“Design Documents” with the following:

Writeups/
writeups of the design
What is it your are going to build and how does it fit the theme?
What tools will you use?
How long do you expect to spend on development of each part?
etc.
API documentation/
Database documentation/
(UML or similar)
Wireframes/
for any implemented UI portions of your application

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.