Project creed¶
UserHarbor should remain simple, predictable, and easy to integrate.
1. Core should only do what is necessary¶
The main library is responsible for basic user account operations:
- registration,
- email verification,
- login,
- session management,
- logout,
- password reset,
- password change,
- user deletion.
Unusual business-specific cases should be implemented outside the library.
UserHarbor should not become an application framework.
2. Framework-agnostic before framework integrations¶
The main library should not depend on FastAPI, Django, Flask, Litestar, or any other framework.
Framework integrations should be created as separate libraries.
3. UserStore and EmailSender are dependencies¶
UserHarbor does not assume where users are stored.
UserHarbor does not assume how email messages are sent.
These responsibilities belong to adapters compatible with the UserStore and
EmailSender interfaces.
4. Adapters should live outside the core¶
Integrations with databases, ORMs, email services, queues, frameworks, and providers should be developed as separate packages.
5. Stability is more important than feature count¶
After the public API becomes stable, further core development should focus mainly on:
- improving security,
- improving reliability,
- improving performance,
- maintaining compatibility.
New features should be added carefully.
6. Simple things should remain simple¶
The library should be easy to use in small projects, while still being possible to extend in larger applications.