A Node.js REST API for cataloguing and exploring your personal game library. Built for IGME 430 – Rich Media Web App Development II at RIT.
Live: https://savepoint-api-74f955603809.herokuapp.com/
SavePoint is a web API that allows users to access, search, filter, and manage a dataset of video games. It is built from scratch using only Node's built-in http and fs modules — no web server frameworks. The server also hosts a client-facing webpage for interacting with the data and a documentation page for developers.
SavePoint/
├── .github/
│ └── workflows/
│ └── node.js.yml # GitHub Actions CI workflow
├── client/ # Static files served to the browser
│ ├── index.html # Main client-facing page
│ ├── docs.html # API documentation page
│ ├── main.js # Client-side fetch logic
│ └── mainStyle.css # Stylesheet
├── db/
│ └── games.json # IGDB-sourced game dataset
├── src/ # Server-side code
│ ├── server.js # Entry point, routing, and body parsing
│ ├── htmlResponses.js # Handlers for static file responses
│ ├── jsonResponses.js # Handlers for JSON API responses
│ └── store.js # In-memory data store
├── eslint.config.js # ESLint flat config
├── package.json
└── README.md
Full endpoint documentation is available at the
/docspage.
| Method | Endpoint | Description |
|---|---|---|
| GET/HEAD | /api/games |
Returns summary list of all games. Supports ?name, ?genre, ?platform, ?limit |
| GET/HEAD | /api/games/:idOrSlug |
Returns a single game by numeric ID or slug |
| GET/HEAD | /api/genres |
Returns a deduplicated list of all genres |
| GET/HEAD | /api/platforms |
Returns a deduplicated list of all platforms |
| POST | /api/games |
Creates a new game entry (201) |
| POST | /api/games/:idOrSlug |
Updates an existing game (204) |
| Method | Endpoint | Description |
|---|---|---|
| GET/HEAD | / |
Main client page |
| GET/HEAD | /docs |
API documentation page |
| GET/HEAD | /mainStyle.css |
Stylesheet |
| GET/HEAD | /main.js |
Client script |
- Data loaded from
.jsonfile at server startup - Static files served by the Node server
- 4 GET endpoints with query parameter support
- 2 POST endpoints accepting JSON and x-www-form-urlencoded
- Status codes: 200, 201, 204, 400, 404
-
Content-TypeandContent-Lengthheaders on all responses - HEAD request support on all GET endpoints
- 404 response for invalid URLs
- Client page using
fetch()with Accept and Content-Type headers - API documentation page
- ESLint with js/recommended spec
- GitHub Actions CI
- Deployed to Heroku
Carter Irish IGME 430 – RIT, Spring 2025