diff --git a/DECISIONS.md b/DECISIONS.md new file mode 100644 index 0000000..bfecb0d --- /dev/null +++ b/DECISIONS.md @@ -0,0 +1,40 @@ +# DECISIONS.md + +A file describing tech stack / feature decisions. sort of a change log + +## The Birth of the project - 2026-10-05 + +### Languages: + +#### Backend + +##### GO + +The language I want to learn + +#### Web Frameworks + +##### HTMX + +Server side rendering reducing the number of roundtrips a user has to make to the server. The server still has to make the same number +of API calls however from the client side it should take less bandwidth and feel quicker + +#### Web Frontend + +##### HTML + +standard web building blocks, no framework chosen yet + +##### CSS + +standard web building blocks, no framework chosen yet + +##### JS + +standard web building blocks, no framework chosen yet + +### DB + +##### PostgreSQL + +Scales better than something like SQLite at the cost of more learning overhead and setup diff --git a/README.md b/README.md index 9f8d0ea..3c70913 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,102 @@ -# backslash +# Backslash -backslash - a backlog tracking program allowing to keep up with all the media you NEED to consume \ No newline at end of file +## A Backlog tracker. + +STATUS: Pre-Development + +A self-hosted backlog tracker that enables you to import content, organize, create lists, add notes to lists or individual items, +leave reviews and ratings and track progress. As this progresses more features will be added of course. +The end goal is to create a system that allows you to track multiple media types: Books, movies, TV Shows and games etc + +To begin I will create the system focused on games, the reason being I want to create this system to I can track my game backlog +as well as wanting to interact with steam and play around with importing media. + +There are other options out there that are much better and established but I want to give this project a go in an attempt to improve +my programming skills and get more exposure to full stack development. By no means am I a programmer, In my day job im an Infrastructure +Operations Engineer so Im likely way out of my depth here but here goes xD + +My Goal is to create this project with minimal use of AI, I will restrict AI usage to asking questions and brainstorming ideas and best practices, +again the goal here is for me to learn programming. + +## Screenshots and Project Demos + +TBC + +## Getting started + +as of right now there is no working program, not even a prototype :D + +### Docker Compose + +TBC once a working prototype exists + +### Kubernetes + +TBC once a working prototype exists + +## Tech stack + +I want to write the program in go, for no other reason than thats the language I want to learn. +architectural decisions will be made and change as I go this can be tracked in [DECISIONS.md](DECISIONS.md), +as needs and requirements change. Im stepping into this blind so continued research is required. + +## Contributions + +I am accepting feature requests / bugs however as this is a learning project for now, no prs. + +## Roadmap + +Will begin with basic functionality and focus on game management with imports from steam. Still unsure on feature priority / development order + +## Data storage & Privacy + +As this is selfhosted you are responsible for all data you hold using this project. Please be mindful of other users you may have using the system once the project evolves +to allow that. I have no idea about best practices when it comes to writing programs that deal with sensitive data such as API keys or PII, I will try to make sure security +privacy take the forefront when it comes to data storage and privacy. + +## Desired Features + +### Auth & Security + +- [ ] Secure Login +- [ ] Integration with Auth Providers i.e Authentik + +### Account + +- [ ] "Families" - Allow users to view / compare libraries, notes, match shared items +- [ ] General profile customization - Profile Pictures (linked with auth / ldap / gravitar), Custom names, Bio, Profile Pages, publicly shared favourites. +- [ ] Media preferences + +### Clients + +- [ ] WebUI Client +- [ ] CLI client + +### Media Importing + +- [ ] Steam for games +- [ ] Jellyfin for media (Movies, TV Shows, Audio Books, Books) +- [ ] Support for other sources +- [ ] Scraping for descriptions, ratings, images, tags + +### Organization + +- [ ] Create lists +- [ ] Add notes to lists +- [ ] Add notes to individual items +- [ ] Leave personal ratings +- [ ] Filters (Genre, Length (HLTB for games), Themes, Rating) +- [ ] Sorting (Length (HLTB for games), Rating) +- [ ] Bulk actions + +### Recommendations + +- [ ] recommend media by comparing tags +- [ ] take into account profile media preferences +- [ ] separate recommendations based on media preference matches between family members +- [ ] Public recommendations from external lists such as imdb +- [ ] recommendations based on steam sale / steam wishlist (default off) + +## License - AGPL-3.0 + +see license file [LICENSE](LICENSE).