3.8 KiB
Guestbooky
A simple yet somehow overdesigned guestbook system featuring a simple control panel (which is a WIP so you'll have to make do with a db manager)
This is phase I of the personal backscratchers project.
📝 Table of Contents
🧐 About
I really need to get my hands dirty from time to time, so I figured I'd make a guestbook for my marriage hotsite. And make everyone else see this code.
It includes many concepts that are very reasonable to tinker with as learning material, in a bite-sized project complexity that allows me to talk about it without losing the breadcrumb trail.
🏁 Getting Started
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
Prerequisites
- .NET 8.0
- A running instance of MongoDB
- A Cloudflare turnstile secret key for the captcha
- Not forget to set up environment variables
You will be able to see in build/docker-compose.public.yml
that the application makes heavy usage of them.
- ASPNETCORE_ENVIRONMENT=Production
- CORS_ORIGINS=https://guestbook.example.com,http://localhost:5008,http://localhost:8080
- ACCESS_USERNAME=user
- ACCESS_PASSWORD=pass
- ACCESS_TOKENKEY=pleaseinsertafairlylargetokenkeyherewillyou
- ACCESS_ISSUER=https://guestbook.example.com/api
- ACCESS_AUDIENCE=https://guestbook.example.com
- CLOUDFLARE_SECRET=0x000000000000000000000000000000000
- MONGODB_CONNECTIONSTRING=mongodb://mongouser:mongopass@mongo:27017/Guestbooky
- MONGODB_DATABASENAME=Guestbooky
You will need to set them up either by hand or by using your IDE's capabilities. On Visual Studio, that can be done via the Debug Properties of Guestbooky.API.
CORS_ORIGINS, ACCESS_* -> variables related to JWT issuing and checking. In order to use the GET and DELETE endpoints for the messages, you need to use a bearer token.
CLOUDFLARE_SECRET -> The turnstile secret, used in the server portion of the captcha check.
MONGODB_* -> Related to the connection to MongoDB. Yeah.
🎈 Usage
For local usage of the backend, you can use docker-compose.local.yml
and edit the fields you need.
🚀 Deployment
Use docker-compose.public.yml
as a basis. it should create the image for you and start running.
⛏️ Built Using
- MongoDB - Database
- .NET - Backend
- Cloudflare Turnstile - Captcha