karlobratko / instakt

Ktor web application with user and content management
MIT License
1 stars 0 forks source link
exposed kotlin ktor postgres s3 seaweedfs

Content Sharing Network

Welcome to the Content Sharing Network! This application allows users to store and access their content, currently focusing on images.

Table of Contents

Features

Technologies Used

Architecture

The application is built using the Ktor framework in a pragmatic functional style with the help of the ArrowKt library. It uses Exposed ORM for database interactions and integrates with PostgreSQL for metadata storage and SeaweedFS for image storage.

Setup

Before running the application, ensure that you have the following installed:

Clone the repository:

git clone https://github.com/karlobratko/instakt
cd instakt

Development

To set up the development environment, follow these steps:

  1. Start the development environment using Podman Compose:

    podman compose -f containers/compose.dev.yml up -d
  2. Run the application in development mode using Gradle:

    ./gradlew :app:runDevelopment

Alternatively, you can use the provided Makefile to simplify these steps:

make dev

Cleanup

To clean up the environment, use the following commands:

podman compose -f containers/compose.dev.yml down
podman volume prune -f

Or use the Makefile:

make clean

Usage

Once the application is running, you can interact with it through its API. The API supports operations such as user authentication, image upload, and retrieval. JWT is used for securing endpoints, so make sure to include the JWT token in the authorization headers of your requests. Examples of endpoint interactions are visible in resources/requests folder.

Contributing

Contributions are welcome! Please submit a pull request or open an issue to discuss your ideas.

License

This project is licensed under the MIT License. See the LICENSE file for details.