This full-stack application is a sample project that demonstrates the usage of Kotlin, Ktor, Exposed (a lightweight SQL library), and PostgreSQL to build a web-based application with database functionality. The project includes modules related to user management and consent handling, as well as region-specific localised politics requirements.
This is interesting article about Ego Investments and the Kotlin multiplatform: https://www.donnfelker.com/why-kotlin-multiplatform-wont-succeed/ that is actally wrong and politicaly directed.. haha Multiplatfrom development works! But You have to have an Unicorn..
- User management with CRUD operations.
- User login and authentication.
- Tenant management.
- Region-specific localised politics requirements.
- User consent tracking.
To get started with this project, follow these steps:
-
Clone the Repository:
git clone [repository_url] cd fullstack-application
-
Install PostgreSQL Create a PostgreSQL database and configure the connection details in the Application.kt file.
-
Build and Run the Application
Copy code ./gradlew run
This will start the application on http://localhost:8080. You can access the application via a web browser or use API endpoints for testing.
The application provides various RESTful API endpoints for user and tenant management. You can find detailed documentation for these endpoints in the source code comments in the Application.kt file.
User Management: Use the provided API endpoints to create, read, update, and delete user records in the database.
Implement user login and authentication using the /api/users/login endpoint
.
Manage tenants with the /api/tenants
and /api/tenants/switch
endpoints.
The application supports region-specific localised politics requirements. You can extend this functionality by creating custom modules for different regions as demonstrated in the UserPlugin class.
The application provides flexibility for customizing the localised politics requirements based on regions. You can create your own region-specific modules by implementing the Module and ConsentType interfaces. Use the UserPlugin to register and manage these modules.
If you'd like to contribute to this project, please feel free to fork the repository, make your changes, and submit a pull request. Your contributions are highly appreciated.
This project is open-source and available under a custom license. Please review the license in the repository for more information.
For any questions or inquiries, you can contact the author through their GitHub account: Author's GitHub.
This is a sample project and may require further development and customization for production use. Always ensure that your application complies with relevant data protection and privacy laws.