What started as a simple student project to create a blog API turned into a nearly one-year journey of researching the best solution for creating a Content Management System (CMS) suitable for artists.
Although I don't consider it to be 'the best,' I believe it offers an interesting alternative for those looking for a CMS that supports various types of media (3D, sound, video, high-quality images), is fast, and offers good scalability.
Labguy consists of three main applications, all written in TypeScript:
- Client
- Dashboard
- REST API
You can find the code for each part in the respective repositories:
Labguy uses a Express server in conjunction with Prisma and JSON Web Tokens (JWT) to process CRUD requests from the Dashboard and GET requests from the Client. It's self-hosted and doesn't require any third party service (SaaS).
The Dashboard is built with:
- React
- @mui/material
- react-router-dom
- tinymce
- @rjsf/core
- material-react-table
The Dashboard is ready to be hosted on GitHub, with automatic sync and deployment using GitHub Actions.
The REST API relies on:
- Express
- Prisma
- Cloudinary
- Multer
It also includes deployment actions for automatic updates.
The Client is built individually. There is no predefined pattern, as it is best to create a personalized front-end application that follows the design rules set by the project. Labguy-client serves as a boilerplate to get started.
Examples of the Client can serve as inspiration for design and usage, showcasing how to integrate the various features and media types Labguy supports.