this K9 Archiver Sign up

K9archiver Case Study

Verified
team

alexdeathway

Author

3

Updates

381

Views

35

Downloads

4

Type

stats

k9archiver Oct 20, 2021 - Present 


Index


1. What are we building(Executive Summary and objections)?

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).



Key features:

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,