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](https://private-user-images.githubusercontent.com/99620284/399360709-72b1832b-85af-403b-a8f8-c0df1e6f85d2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg5MzcxNzgsIm5iZiI6MTczODkzNjg3OCwicGF0aCI6Ii85OTYyMDI4NC8zOTkzNjA3MDktNzJiMTgzMmItODVhZi00MDNiLWE4ZjgtYzBkZjFlNmY4NWQyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA3VDE0MDExOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI5ODdhZGI4NzVmMGEwZGQ4ODE2YWZkNjYzYzNjZTA1MzkzZGU0MTYwMWI2ODNhZDYzN2E0NjRkODU5OWY2YzkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.WfTE1aq_z2mDlu6P4-PZVwYAF3-KL76q1d-37u4Z1aI)
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
andlocal 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
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.