An open API service indexing awesome lists of open source software.

https://github.com/jmrl23/portfolio-backend

portfolio website's backend
https://github.com/jmrl23/portfolio-backend

api backend backend-api portfolio-website portofolio rest-api

Last synced: 4 months ago
JSON representation

portfolio website's backend

Awesome Lists containing this project

README

          

# Portfolio backend

![](https://media.giphy.com/media/l0HlPBrpFSdVq5WPC/giphy.gif?cid=790b76114rtbtkwbijr4wt3fq6l67cgfu72nsz83clyjneje&ep=v1_gifs_search&rid=giphy.gif&ct=g)

backend server for portfolio website

## Quickstart

options on making things ready

- standalone (node.js)

1. make a `.env` file and fill out the required variables
1. run build (only if you wish to run the production/ build version)
1. run start [script](#scripts)

- docker
1. [fill](./docker-compose.yaml) the environment variables needed
1. run build [script](#scripts)
1. run `docker compose up -d`

## Features/ modules

- [cache](./src/modules/cache/)
- api endpoints optimized by cache
- uses redis under the hood
- [auth](./src/modules/auth/)
- generate api key
- [modular access](./src/modules/auth/authPermissions.json)
- revoke api key
- [emails](./src/modules/emails/)
- send email using SMTP
- [files](./src/modules/files/)
- [upload & delete](./src/modules/files/stores/filesStoreInterface.ts)
- custom files store ([factory](./src/modules/files/filesStoreFactory.ts))
- [projects](./src/modules/projects/)
- create, read, update, and delete operations
- [testimonials](./src/modules/testimonials/)
- generate testimonial key
- strategy to prevent spams
- create, read, and delete operations

## Scripts

| Script | Description |
| ---------- | ------------------------------------------- |
| build | build project |
| test | run test files |
| start | start (must build first) |
| start:dev | start on development mode (nodemon + swc) |
| start:prod | start on production mode (must build first) |
| format | format codes (prettier) |
| lint | lint codes (eslint) |

## Extras

- [frontend repository](https://github.com/jmrl23/portfolio)

## References

- [fastify-template](https://github.com/jmrl23/fastify-template)
- [cache-manager](https://www.npmjs.com/package/cache-manager)
- [Uniform Resource Identifier](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier)
- [google app passwords](https://myaccount.google.com/apppasswords)
- [prisma](https://www.prisma.io/)
- [swagger](https://swagger.io/)