## 📜 About
Thream's Application Programming Interface (API) to stay close with your friends and communities.
It uses [Thream/file-uploads-api](https://github.com/Thream/file-uploads-api) [v1.1.7](https://github.com/Thream/file-uploads-api/releases/tag/v1.1.7).
## ⚙️ Getting Started
### Prerequisites
- [Node.js](https://nodejs.org/) >= 16.0.0
- [npm](https://www.npmjs.com/) >= 8.0.0
- [PostgreSQL](https://www.postgresql.org/)
### Installation
```sh
# Clone the repository
git clone git@github.com:Thream/api.git
# Go to the project root
cd api
# Install dependencies
npm clean-install
# Configure environment variables
cp .env.example .env
# Generate Prisma client types
npm run prisma:generate
```
### Database Setup
```sh
# Create a new user and database
psql
CREATE DATABASE thream;
CREATE USER thream_user with encrypted password 'password';
ALTER USER thream_user WITH SUPERUSER;
```
### Database Production migration
```sh
npm run prisma:migrate:deploy
```
### Local Development environment
Recommended to use [VSCode: Remote development in Containers](https://code.visualstudio.com/docs/remote/containers-tutorial).
#### Database Development migration
```sh
# Run Prisma migrations
npm run prisma:migrate:dev
# Reset the database (WARNING: This will delete all data)
npm run prisma:migrate:reset
```
#### Usage
```sh
npm run dev
```
##### Services started
- `api`:
- [Maildev](https://maildev.github.io/maildev/):
- [Prisma Studio](https://www.prisma.io/studio):
##### Commands
```sh
# Build, Lint and Test
npm run build
npm run build:typescript
npm run lint:editorconfig
npm run lint:markdown
npm run lint:eslint
npm run lint:prettier
npm run test
```
### Production environment (with [Docker](https://www.docker.com/))
```sh
docker compose up --build
```
## 💡 Contributing
Anyone can help to improve the project, submit a Feature Request, a bug report or
even correct a simple spelling mistake.
The steps to contribute can be found in [CONTRIBUTING.md](./CONTRIBUTING.md).
## 📄 License
[MIT](./LICENSE)