For recent updates please see https://github.com/Lycan7hropus/FreshNearMe/tree/develop
This Kotlin-based web application serves as an advanced platform for posting and managing offers. It allows users to create, manage, and interact with a wide range of offers, while also providing functionalities for user authentication and profile management.
- Kotlin: Primary programming language
- Ktor: Asynchronous web framework used for building servers and clients in connected systems.
- MongoDB: For flexible and scalable data storage.
- Google OAuth: For secure authentication, integrating Google's reliable sign-in systems.
- Koin: Lightweight dependency injection framework.
- Clean Architecture: The application adheres to the principles of Clean Architecture, ensuring the separation of concerns and independence of different layers like data, domain, and presentation.
- Repository Pattern: This pattern is evident in classes like
CategoryRepositoryImpl
andOfferRepositoryImpl
, providing a clean abstraction layer over data access mechanisms. - Factory Pattern: Used in classes like
CategoryFactory
, simplifying object creation and enhancing flexibility. - Use Case/Interactor Pattern: Each business logic operation is encapsulated in a use case (e.g.,
CreateCategoryUseCase
,GetUserOffersUseCase
), promoting a clean separation of concerns and making the code more readable and testable.
-
User Features:
UserRoute.kt
establishes endpoints for user-related actions.UserDataRepositoryImpl
implements data handling operations, interfacing with the database.- Use cases like
SaveUserUseCase
andUpdateUserDataUseCase
encapsulate specific user-related operations.
-
Offer Features:
OfferRoute.kt
sets up routes for managing offers.OfferRepositoryImpl
deals with offer data storage and retrieval.- Use cases such as
CreateOfferUseCase
andUpdateOfferUseCase
handle individual aspects of offer management.
-
Category Features:
CategoryRoute.kt
manages endpoints for category operations.CategoryService
andCategoryRepository
provide business logic and data access functionalities.- Use cases like
CreateCategoryUseCase
andDeleteCategoryUseCase
focus on specific category operations.
-
Authentication and Security:
AuthRoute.kt
andGoogleUserInfoServiceImpl
work together to provide secure authentication mechanisms.- Integration with Google OAuth ensures a reliable and secure sign-in process.
-
Database Integration and Management:
MongoDatabaseProvider
orchestrates database connections and interactions, ensuring efficient data management.- Modular database configurations are managed through files like
DatabaseModule.kt
, enhancing scalability and maintainability.