See docs/SETUP.md for production and development setups.
- Magic Link login system (password free, managed by JWT tokens)
- Submission/Comment Posting (with full Google Captcha v3 support)
- Submission/Comment Voting (upvotes/downvotes, options to sort by votes)
- Ability to flag submissions/comments for moderation
- User bio/birthday/full name customization on "account settings" page
- Command line logging (HTTP request logging + logging from business logic files)
.envconfig files used on frontend & backend
- Ability to report a post (and maybe a user?)
- Fully working admin page (view/delete flagged posts, delete users, view full website metrics)
- Clean up error handling (mostly using Log.fatal now, not great for production as this kills the program)
- Logging to a file, which is then synced with a S3 Bucket
| Feature | API Status | Web Status | Notes |
|---|---|---|---|
| Login via Magic Link | ✅ Complete | ✅ Complete | JWT-based authentication, cannot be done over eduroam because they block outbound email port connections. |
| Magic Link accept page | ✅ Complete | ✅ Complete | Page where the server validates the magic link found in the email, and adds the token to browser cookies |
| News/Submission Feed | ✅ Complete | ✅ Complete | Need to complete different kinds of sorts (newest, best, oldest), and requires pagination |
| Post Submission | ✅ Complete | ✅ Complete | |
| User Profile Page | ✅ Complete | ✅ Complete | |
| Comments | ✅ Complete | ✅ Complete | Future: implement replies to other comments, comments on user profile |
| Flagging/Reporting | ✅ Complete | ✅ Complete | |
| Admin Console | 🟡 In Progress | 🟡 In Progress | Lacking moderation features (view flagged posts, delete posts, delete users, see recent/problematic user signups) |
| Help Pages/FAQ/Docs | - | 🟡 In Progress | Need to add some static pages with FAQs |
| Mobile Support | - | Not Started | Need to ensure all functionality is present on a mobile device |
- Modularize routes
- Improved error handling (ie. stop using
log.Fataland start usingfmt.Errorf)
|--main.go
|--routes/
| |--user.go
| |--login.go
|--handlers/
| |--user_handler.go
| |--login_handler.go
HTTP request logging is done by a built in middleware for Fiber. Other logs are placed in the database and backend "core" logic files.
| Type | Description |
|---|---|
[INFO] |
Basic event, not very important |
[WARN] |
Some sort of failure took place, wasn't fatal |
[FATAL] |
Error that killed the program took place, pay attention to these |
Future: toggle logging via .env (PRODUCTION=true), see this ChatGPT conversation for more on that.