Skip to content

Latest commit

 

History

History
74 lines (57 loc) · 3.37 KB

README.md

File metadata and controls

74 lines (57 loc) · 3.37 KB

Markdown Web Notes

A fully implemented website with a user-friendly user interface and authorization for maintaining and editing notes in the markdown online.

The following concepts were used during development: Cookie session based authentication, RESTful API, Containerization with Docker, Nginx configuration, Reactive responsive UI, Automated testing and much more.

Main Preview

Project Structure and Technologies Used

The backend part is implemented using python as the main language:

  • FastAPI - a modern framework for creating web APIs.
  • Pydantic - a popular and convenient library for data validation.
  • Motor - a coroutine-based API for non-blocking access to MongoDB.
  • Redis - mainly for storing auth sessions, a coroutine-based redis is used.
  • Pytest - a popular framework for automated testing.
backend
├── src
│   ├── database/    // mongo & redis clients generators
│   ├── exceptions/  // custom FastAPI exceptions
│   ├── repos/       // MongoDB CRUDs
│   ├── routers/     // web API endpoints
│   ├── schemas/     // pydantic validation schemas
│   └── services/    // business-logic implementation
│
└── tests
    ├── test_auth/   // auth-service tests
    └── test_note/   // note-service tests

The frontend part is implemented using typescript, html and pure css:

  • React - is the javacript library for web user interfaces.
  • Yarn + vite - as a package manager and local dev server.
  • React-router-dom - declarative routing for React web apps.
  • React-hook-form - convenient and flexible forms for React.
  • Zod - a schema declaration and validation library.
  • React-markdown - render markdown to React elements.
frontend
└── src
    ├── assets/      // images and global css
    ├── components/  // react components
    │   ├── routes/  // react-router-dom
    │   ├── screens/ // main components (used in routes)
    │   └── ui/      // small reusable components
    │
    ├── hooks/       // custom react hooks
    ├── providers/   // providers for global states
    └── services/    // API services calls and schemas
        ├── auth/    // auth-service
        └── note/    // note-service

Screenshots

Login Page Playground Playground expanded Edit Note Page Display Page

Afterword

3-4 months is quite a long time for such a small application. However, the feeling of a completed project at the end of the year is worth all the effort and hard work. Some components may have non-critical bugs related to UI/UX or optimization that will be identified and fixed in the future.