Author
Updates
Views
Downloads
Type
2. Tech Stack & Architecture?
3. Application and System Design.
4. Development.
5. Key features and Metrics.
6. future prospects
What are we building (Problem, Solution Proposal and Objections)?
Problem: While working on project which is either solution for problem, research or simply done for purpose, we need to do a lot of documenting,
there are a lot of tools for satisfying this need, but they are either used to publish specific set of documentation, target a very niche people(Developers, reader, learners or as instruction manual) or have very limited moderation and most of them don't offer collaboration. What we needed is a platform where we can collaborate, document and share raw notes.
Solution Proposal: Developing a platform which allow creating notes and grouping them at a single place called cluster, cluster can be created by user, creator of cluster, own the cluster and get certain privileges like inviting collaborators, Allow or disallowing non-collaborators to contribute to notes in that cluster, marking a note verified or not as per the requirement of cluster standard.
Objections:
Why not just use blog/article website like medium or dev.to ?
Blogs/article are generally used for publishing writing that are used for conveying some information for purpose of learning or exchanging some data, while we want something that can be used to record data or notes for sharing among limited people or for future references.
Then, why not medium like notion or obsidian, they allow collaboration and sharing ?
Though we want to share among limited people we don't want to limit its reach or accessibility, for example this note itself is published on 'k9archiver' project.
Any more reasons?
The project will be open source, means you can self-host your own instance, or if you wish to add or change any feature you can contribute to @github/alexdeathway/k9archiver.
Tech Stack & Architecture?
Frontend: HTML, tailwindcss htmx
Backend: Python, Django, gunicorn, pytest
Infrastructure and deployment:Git, docker, GitHub action, Github codespaces
Data Management:db.SQLite, Postgres, Dropbox, Whitenoise, Backblaze B2/AWS S3
Service and operations: Linux, certbot, Nginx,Sendgrid
Request and response cycle are handle by nginx which proxy gunicorn running the Django apps inside docker, static content(css,js and static files will be server by whitenoise package from server directly), Note assets are media files like images or video which are attached to notes. We are using AWS S3/Back blaze B2 for storing that assets, for fast availability, Users can also attach files by simply linking URL of media in notes which are hosted elsewhere. All other media files will be uploaded to Dropbox.
Development
Cluster workflow, as already stated in solution section
Email delivery and Implementation:
Currently, we are using email for two purpose and for both we are using SendGrid email service:
1. For implementation of forgot login password feature.
2. Adding user to cluster (Inviting user to cluster by email, if user doesn't exist).
WYSIWYG Editor: A WYSIWYG (What
You See Is What You Get) Editor is implemented for note-taking, which
give user a wide range of tools for how they want to create their note,
this feature is implemented using custom patched version of Django-summernote,
Assets/Media management: Assets
used in the notes, can be either hosted by user and linked in the notes
or user can directly upload the media (Images/Videos) in notes and AWS will be used to storage in backend.
Metrics:
[img]performance test by google pageview
Future prospects
There are some features planned such as,