welel/noted

The website helps to write, store and search notes on a specific source or topic.

django
django-project
django-rest-framework
learning
markdown
notes
notes-app
webservice

logo

NoteD.

Empowering personal growth through shared knowledge.

NoteD.

This website helps to create personal notes, share them public, search for notes on a specific information source or interesting topics and save them, follow users and be followed by others. The project was created for my educational purposes, but has a practical application.


🔍 About

The goal of the project is to develop a system for creating, storing notes and searching for notes by sources of information.

A note is a summary of some material, for example: a book, video, course, article, etc. A source is a some information material. The user can search for public notes or notes by the name of the Source. The user can create public notes and drafts, subscribe to other users.

The benefit of this project is that a person studying any material reduces the time for taking notes.

Users can: - look for notes of other people; - start writing notes from other people's notes; - to study the material in a short form, according to other people's notes; - skimming over existing notes to find a Source to study something - etc.

NoteD. Home

Main useful features:

  • Create public notes (and drafts)
  • Create a note on a specific source
  • Copy (fork) and edit other's notes
  • Search notes
  • Search notes by a specific source
  • Search for sources and list of notes on them
  • Download notes [md, pdf, html]

Additional features:

  • Add tags to notes
  • Search notes by tags
  • Subscribe to tags
  • Follow users
  • Pin your important notes
  • Add notes to bookmarks

NoteD. Form

Notes are created in the markdown editor. The editor supports preview, split editing, full screen editing, hotkeys.

Dark mode / code highlight / code full-screen / mobile version.



🔥 Features

Feature Description
User Accounts Users can create an account to access additional features, log in to their account. Social authentication is also supported with Google, GitHub, or Yandex accounts.
Content Management Users can create and edit content using a user-friendly interface (WYSIWYG Markdown Editor), and content can be tagged for easier categorization and searching. Users can also bookmark posts to easily access them later and like posts to show their appreciation. Posts can be downloaded in Markdown, PDF, or HTML format.
User Interaction Users have a profile page that displays their information and activity (notes). Users can follow other users to see their activity and share content on Twitter, WhatsApp, and Telegram.
Search Users can search for content based on keywords, tags and sources.
Design The site uses Twitter Bootstrap for responsive layout and UI elements and is designed to be mobile-friendly, and the site offers a dark mode for users who prefer it.
Internationalization Site is available in both English and Russian
Code Tests/Documentation Code is documented to make it easier to understand and maintain. Automated tests are used to check for functionality, identify bugs, and ensure optimal performance.
Caching System Site uses caching to improve performance. Asynchronous tasks are used to improve responsiveness.
GitHub API Integration Site integrates with GitHub API to render markdown files in the HTML format (with code highlighting).


🛠️ Tech stack




🏗️ Installation

  1. Prerequisites:

  2. sudo apt install g++

  3. sudo apt install build-essential
  4. sudo apt install libpq-dev python3-dev python3-pip python3.10-venv
  5. sudo apt install wkhtmltopdf for PDF files generation.
  6. sudo apt install gettext for translation.

  7. Install PostgreSQL and create new database.

    To use trigrams in PostgreSQL, you will need to install the pg_trgm extension first. Execute the following command to install the pg_trgm extension inside a database: CREATE EXTENSION pg_trgm;

  8. Clone or download the repository.

  9. Create and activate virtual environment and install requirements from requirements/local.txt using Python 3.10.

  10. Fill .env.dist file with required data and rename it to .env. Minimal requirements are SECRET_KEY and the database cofiguration (but then the functionality will be limited).

  11. Make migrations and migrate with a custom command[1] or via Makefile[2].

# [1]
python manage.py makemigrate --settings=core.settings.local

# [2]
make setdb
  1. Set up a cache backend or set a cache backend with following code in core/settings/local.py:
CACHES = {
    "default": {
        "BACKEND": "common.cache.RedisDummyCache",
    }
}
  1. Set up Celery worker and Celery beat.

  2. Run the development server with one of the following commands.

# [1]
python manage.py runserver --settings=core.settings.local

# [2]
make run


👨‍💻 Team

Stars
128
0.00% more than last month
Forks
13
Open Issues
29