Trem - Threads style note taking

Trem is a full stack web application for capturing notes as trains of thoughts.
Stack: Python TypeScript Django Ninja PostgreSQL React

Author

Andrew Schwenke

Project Summary

Trem (noun)

  1. (Brazil) train
  2. (Minas Gerais, slang): a thing, anything (except a train)

Trem is a note-taking application designed to help users organise their thoughts in a threaded manner. Inspired by the concept of a “train of thought,” Trem allows users to link related notes into threads, making it easy to trace the evolution of ideas over time. This structure mimics the flow of a personal conversation, enabling deeper exploration of topics and better organisation of complex ideas. Note that Trem is under the development phase and is not yet ready for production use.

Technical Stack

  • Programming Languages: Python, TypeScript
  • Frameworks: Django (backend), React (frontend)
  • Database: Postgres
  • Build Tools: Bash scripts for development tasks
  • ASGI Server: Gunicorn with Uvicorn workers for deploying and supporting asynchronous capabilities

Key Features

  • Threaded Notes: Organise your notes into threads, allowing for easy navigation and logical grouping of related ideas.
  • Tagging System: Apply tags to notes for cross-referencing ideas across different threads.
  • Incremental Writing Support: Encourages revisiting and expanding notes, fostering gradual development of complex concepts.

Challenges and Solutions

Building a robust note-taking application like Trem required careful consideration of both frontend and backend integration. The choice of Django for the backend was made to leverage its strong ORM capabilities, which are well-suited for managing complex relational data like threaded notes. React was chosen for the frontend to provide a dynamic and responsive user interface.

Usage

To start using Trem locally:

  1. Clone the repository and navigate to the project directory.
  2. Build the project using the ./build.sh script.
  3. Start the application using python -m gunicorn trem.asgi:application -k uvicorn.workers.UvicornWorker.

Future Development

Future plans for Trem include adding features like thread linking and enhanced tag management. These additions will provide users with more powerful tools to create and manage complex knowledge networks.

You can explore the project further on GitHub.

For more on incremental writing, see:

Zettelkasten method resources: