How greentetrahedron/flower-forest works
Flower Forest is a flower-portfolio application: users register or sign in, organize plants into catalogues, and manage catalogue visibility and plant details. The Angular client fronts two alternative backend implementations: a monolithic API and a microservices version with separate user, catalogue, and plant services. The monolith’s plant controller delegates ownership and public-catalogue checks to authorization logic; the sampled microservices catalogue controller delegates authorized operations to its repository. RabbitMQ-based user-data replication is documented and a catalogue consumer is present. Frontend service wiring and several service internals were not sampled, so uncertain calls are omitted.
Main entry points: components User views · Controllers Monolith controllers · catalogue.service.ts Catalogue client · plant.service.ts Plant client
Components 26
Angular client
- Angular app
FlowerForestFrontEnd/FlowerForestFrontEnd/src/app/app.component.ts - User views
FlowerForestFrontEnd/FlowerForestFrontEnd/src/app/views/components - Catalogue UI
FlowerForestFrontEnd/FlowerForestFrontEnd/src/app/catalogue/components - Plant UI
FlowerForestFrontEnd/FlowerForestFrontEnd/src/app/plant/components - Account UI
FlowerForestFrontEnd/FlowerForestFrontEnd/src/app/user/components - Catalogue client
FlowerForestFrontEnd/FlowerForestFrontEnd/src/app/catalogue/services/catalogue.service.ts - Plant client
FlowerForestFrontEnd/FlowerForestFrontEnd/src/app/plant/services/plant.service.ts - User client
FlowerForestFrontEnd/FlowerForestFrontEnd/src/app/user/services/user.service.ts - Token handling
FlowerForestFrontEnd/FlowerForestFrontEnd/src/app/http-interceptors/services/append-token-interceptor/append-token-interceptor.service.ts - Browser storage
FlowerForestFrontEnd/FlowerForestFrontEnd/src/app/storage/services/storage.service.ts
Monolithic API
- Monolith controllers
FlowerForestAPI/FlowerForestAPI/Controllers - Catalogue authorization
FlowerForestAPI/FlowerForestAPI/AuthorizeUserServices/AuthorizeUserService.cs - Monolith repositories
FlowerForestAPI/FlowerForestAPI/Repositories - Monolith database context
FlowerForestAPI/FlowerForestAPI/DbContexts/FlowerForestContext.cs
Microservices API
- User service
FlowerForestMicroserviceAPI/FlowerForestAPI/UserMicroservice/Controllers/UserController.cs - Catalogue service
FlowerForestMicroserviceAPI/FlowerForestAPI/CatalogueMicroservice/Controllers/CatalogueController.cs - Plant service
FlowerForestMicroserviceAPI/FlowerForestAPI/PlantMicroservice/Controllers/PlantController.cs - User database
FlowerForestMicroserviceAPI/FlowerForestAPI/UserMicroservice/DbContexts/UserDbContext.cs - Catalogue database
FlowerForestMicroserviceAPI/FlowerForestAPI/CatalogueMicroservice/DbContexts/CatalogueDbContext.cs - Plant database
FlowerForestMicroserviceAPI/FlowerForestAPI/PlantMicroservice/DbContexts/PlantDbContext.cs - Catalogue repository
FlowerForestMicroserviceAPI/FlowerForestAPI/CatalogueMicroservice/Repositories/CatalogueRepositories/CatalogueRepository.cs - Plant repository
FlowerForestMicroserviceAPI/FlowerForestAPI/PlantMicroservice/Repositories/PlantRepositories/PlantRepository.cs
Shared infrastructure
- Token services
FlowerForestMicroserviceAPI/FlowerForestAPI/AuthenticationUtility/TokenServices/JwtTokenService.cs - RabbitMQ client
FlowerForestMicroserviceAPI/FlowerForestAPI/MessageBrokerClient/Clients/RabbitMQClient.cs
Other components
- Portfolio user
- RabbitMQ broker
Connections 27
- Portfolio user → User views: uses
- Angular app → User views: presents
- User views → Catalogue UI: opens
- User views → Plant UI: opens
- User views → Account UI: opens
- Catalogue UI → Catalogue client: requests
- Plant UI → Plant client: requests
- Account UI → User client: requests
- Token handling → Browser storage: reads token
- Catalogue client → Monolith controllers: HTTP requests
- Plant client → Monolith controllers: HTTP requests
- User client → Monolith controllers: HTTP requests
- Catalogue client → Catalogue service: HTTP requests
- Plant client → Plant service: HTTP requests
- User client → User service: HTTP requests
- Monolith controllers → Catalogue authorization: checks access
- Monolith controllers → Monolith repositories: handles data
- Catalogue authorization → Monolith repositories: reads catalogue
- Monolith repositories → Monolith database context: queries
- Catalogue service → Catalogue repository: authorized operations
- Catalogue repository → Catalogue database: queries
- Plant service → Plant repository: plant operations
- Plant service → Catalogue repository: loads catalogue
- Plant repository → Plant database: queries
- User service → User database: user operations
- RabbitMQ client → RabbitMQ broker: publishes or consumes
- Catalogue service → RabbitMQ client: receives user events