Skip to content

nanotaboada/ts-node-samples-express-restful

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧪 RESTful API with Node.js and Express.js in TypeScript

Status

Node.js CI Quality Gate Status Codacy Badge codecov CodeFactor codebeat badge

About

Proof of Concept for a RESTful API made with Node.js LTS/Jod and Express.js 4 in TypeScript.

Structure

Simplified, conceptual project structure and main application flow

Figure: Simplified, conceptual project structure and main application flow. Not all dependencies are shown.

Install

npm install

Run

npm run dev

By default the application server will start as follows:

> [email protected] dev
> nodemon

[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): src/**/*
[nodemon] watching extensions: ts
[nodemon] starting `ts-node ./src/server.ts`
[server]: Server is running at http://localhost:9000

You can change the port by setting the PORT environment variable in the .env file.

# /.env
PORT=9999

Documentation

http://localhost:9000/swagger/

API Documentation

Container

Docker Compose

This setup uses Docker Compose to build and run the app and manage a persistent SQLite database stored in a Docker volume.

Build the image

docker compose build

Start the app

docker compose up

On first run, the container copies a pre-seeded SQLite database into a persistent volume On subsequent runs, that volume is reused and the data is preserved

Stop the app

docker compose down

Optional: database reset

docker compose down -v

This removes the volume and will reinitialize the database from the built-in seed file the next time you up.

Credits

The solution has been coded using Visual Studio Code.

Terms

All trademarks, registered trademarks, service marks, product names, company names, or logos mentioned on this repository are the property of their respective owners. All usage of such terms herein is for identification purposes only and constitutes neither an endorsement nor a recommendation of those items. Furthermore, the use of such terms is intended to be for educational and informational purposes only.

Contributors 3

  •  
  •  
  •