CarNum — Azərbaycanda avtomobil nömrə nişanları əsasında sosial platforma. İstifadəçilər nömrə ilə axtarış edə, maşın sahibləri ilə əlaqə qura, maşın profili yarada, sənəd yükləyə və sosial feed-dən istifadə edə bilərlər.
| Komponent | Texnologiya |
|---|---|
| Runtime | Java 21, Spring Boot 3.4.x |
| Build | Gradle (Kotlin DSL) |
| ORM | Spring Data JPA + Hibernate |
| DB (core) | PostgreSQL 16+ |
| DB (analytics) | TimescaleDB (PG extension) |
| Cache / Queue | Redis 7+ (Lettuce) + Redis Streams |
| DTO Mapping | MapStruct 1.5+ |
| Auth | Spring Security + JJWT |
| Validation | Jakarta Validation (Hibernate Validator) |
| API Docs | Springdoc OpenAPI 2.x |
| Monitoring | Micrometer + Prometheus + Actuator |
| Migration | Flyway |
| Testing | JUnit 5 + Mockito + Testcontainers |
| Containerization | Docker + Docker Compose |
Monolit daxilində hər modul öz package boundary-sinə malikdir. Modullar bir-birilə yalnız public service interface-lər vasitəsilə danışır. Heç bir modul digərinin repository və ya entity-sinə birbaşa müraciət etmir.
bff/ package monolitin yeganə "xaricə açıq" hissəsidir. Hər endpoint:
@JsonIgnore və ya serialization annotation-sız olmalıdır — çünki onlar heç vaxt serialize olunmayacaq.*Response DTO class-ı olmalıdır.FAIL_ON_UNKNOWN_PROPERTIES = true olmalıdır.| # | Modul | Package | Prioritet |
|---|---|---|---|
| 1 | Infrastructure | infrastructure |
P0 |
| 2 | Auth | auth |
P0 |
| 3 | User | user |
P0 |
| 4 | Car | car |
P1 |
| 5 | Document | document |
P1 |
| 6 | Search | search |
P1 |
| 7 | Messaging | messaging |
P2 |
| 8 | Feed | feed |
P2 |
| 9 | Notification | notification |
P2 |
| 10 | Admin | admin |
P2 |
| 11 | CarCoin | carcoin |
P1 |
| 12 | Tracking | tracking |
P2 |