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

https://github.com/ednanf/game-journal

Game Journaling built using the MERN stack.
https://github.com/ednanf/game-journal

bcryptjs gaming-website jwt mern-stack mongodb nodejs typescript

Last synced: 16 days ago
JSON representation

Game Journaling built using the MERN stack.

Awesome Lists containing this project

README

          

app-icon

# Game Journal

## Notes

- The backend is hosted on Render and takes a moment to wake up after periods
of inactivity. Please allow time for the server to respond on your first request.
- Currently, the auth token is stored in local storage instead of cookies to
avoid CORS complications, particularly with WebKit on iOS.

## About Me

- **Author**: Ednan RogΓ©rio Frizzera Filho
- [GitHub](https://github.com/ednanf) β€’ [LinkedIn](https://www.linkedin.com/in/ednanrff/)
- Additional contact info available on my GitHub profile.

## Objective

This project is a personal game journal application that allows users to track their gaming journey by logging
activities with dates and ratings. It's designed to be a simple, intuitive platformβ€”no frills, just a quick way to
document your gaming experiences.

The application is built using TypeScript and the MERN stack (MongoDB, Express, React, Node.js). The backend implements
JWT authentication and bcrypt password hashing. Security follows best practices including input validation,
sanitization, rate limiting, and CORS configuration.

The application is a PWA (Progressive Web App), allowing users to install it on their devices for a
native-like experience.

## Live Application

πŸš€ **[View Live Demo](https://game-journal.frizzera.dev/)**

_Note: First load may take a moment as the backend wakes up on Render's free tier._

## API Documentation

- For an in-depth look at the API data flow, please refer to
this [report](https://github.com/ednanf/game-journal/blob/master/docs/BACKEND_REPORT.md).
- See the API documentation
at [Scalar](https://registry.scalar.com/@ednan-frizzera-dev-team/apis/game-journal-api/latest).

## Main Technologies

### Languages

- TypeScript
- HTML
- CSS

### Backend

- Node.js
- Express
- MongoDB
- JWT
- bcrypt

### Frontend

- React
- Axios

### Hosting

- Backend: [Render](https://render.com/)
- Frontend: [Vercel](https://vercel.com)

## Dependencies

### Backend

```plaintext
game-journal-backend
β”œβ”€β”€ bcryptjs ^3.0.2
β”œβ”€β”€ cors ^2.8.5
β”œβ”€β”€ express ^5.1.0
β”œβ”€β”€ express-rate-limit ^8.0.1
β”œβ”€β”€ express-xss-sanitizer ^2.0.0
β”œβ”€β”€ helmet ^8.1.0
β”œβ”€β”€ http-status-codes ^2.3.0
β”œβ”€β”€ jsonwebtoken ^9.0.2
β”œβ”€β”€ mongoose ^8.16.5
β”œβ”€β”€ morgan ^1.10.1
β”œβ”€β”€ ms ^2.1.3
β”œβ”€β”€ validator ^13.15.15
β”œβ”€β”€ zod ^4.0.14
β”œβ”€β”€ @types/axios ^0.9.36 (dev)
β”œβ”€β”€ @types/cors ^2.8.19 (dev)
β”œβ”€β”€ @types/express ^5.0.3 (dev)
β”œβ”€β”€ @types/express-xss-sanitizer ^2.0.0 (dev)
β”œβ”€β”€ @types/jsonwebtoken ^9.0.10 (dev)
β”œβ”€β”€ @types/mongoose ^5.11.96 (dev)
β”œβ”€β”€ @types/morgan ^1.9.10 (dev)
β”œβ”€β”€ @types/node ^24.1.0 (dev)
β”œβ”€β”€ @types/validator ^13.15.2 (dev)
β”œβ”€β”€ @typescript-eslint/eslint-plugin ^7.18.0 (dev)
β”œβ”€β”€ @typescript-eslint/parser ^7.18.0 (dev)
β”œβ”€β”€ eslint ^8.57.1 (dev)
β”œβ”€β”€ eslint-config-airbnb-base ^15.0.0 (dev)
β”œβ”€β”€ eslint-config-airbnb-typescript ^18.0.0 (dev)
β”œβ”€β”€ eslint-config-prettier ^10.1.8 (dev)
β”œβ”€β”€ eslint-plugin-import ^2.32.0 (dev)
β”œβ”€β”€ prettier ^3.6.2 (dev)
β”œβ”€β”€ tsx ^4.20.3 (dev)
└── typescript ~5.5.0 (dev)
```

### Frontend

```plaintext
game-journal-frontend
β”œβ”€β”€ axios ^1.11.0
β”œβ”€β”€ react ^19.1.0
β”œβ”€β”€ react-dom ^19.1.0
β”œβ”€β”€ react-icons ^5.5.0
β”œβ”€β”€ react-router-dom ^7.7.1
β”œβ”€β”€ react-toastify ^11.0.5
β”œβ”€β”€ @eslint/js ^9.30.1 (dev)
β”œβ”€β”€ @types/react ^19.1.8 (dev)
β”œβ”€β”€ @types/react-dom ^19.1.6 (dev)
β”œβ”€β”€ @types/react-router-dom ^5.3.3 (dev)
β”œβ”€β”€ @vitejs/plugin-react ^4.6.0 (dev)
β”œβ”€β”€ eslint ^9.30.1 (dev)
β”œβ”€β”€ eslint-plugin-react-hooks ^5.2.0 (dev)
β”œβ”€β”€ eslint-plugin-react-refresh ^0.4.20 (dev)
β”œβ”€β”€ globals ^16.3.0 (dev)
β”œβ”€β”€ prettier ^3.6.2 (dev)
β”œβ”€β”€ typescript ~5.8.3 (dev)
β”œβ”€β”€ typescript-eslint ^8.35.1 (dev)
β”œβ”€β”€ vite-plugin-pwa: ^1.0.2 (dev)
└── vite ^7.0.4 (dev)
```

## Legal

[![CC BY\-NC\-ND 4\.0](https://img.shields.io/badge/License-CC%20BY--NC--ND%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-nd/4.0/)

This work is licensed under
a [Creative Commons Attribution–NonCommercial–NoDerivatives 4\.0 International License](https://creativecommons.org/licenses/by-nc-nd/4.0/).
See the full text in `LICENSE` or
at [https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode).