Files
NotyKT/noty-api
dependabot[bot] b31f5a0a3c [API]: Bump org.jlleitschuh.gradle:ktlint-gradle in /noty-api
Bumps org.jlleitschuh.gradle:ktlint-gradle from 11.4.0 to 11.5.0.

---
updated-dependencies:
- dependency-name: org.jlleitschuh.gradle:ktlint-gradle
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-09 04:48:52 +00:00
..
2023-03-05 16:26:12 +05:30
2023-03-05 16:26:12 +05:30
2020-10-28 21:36:00 +05:30
2023-03-05 16:26:12 +05:30
2023-01-01 21:33:52 +05:30
2020-10-11 22:01:42 +05:30
2020-10-11 22:01:42 +05:30
2020-10-11 22:01:42 +05:30
2020-10-11 22:01:42 +05:30
2020-10-11 22:01:42 +05:30
2020-10-11 22:01:42 +05:30
2020-10-11 22:01:42 +05:30

NotyKT (API)

Build (API) Deploy (API)

Noty backend REST API is built with Ktor framework with PostgreSQL as database and deployed on the Railway.

Currently this API is deployed on _https://notykt-production.up.railway.app. You can try it 😃.

📄 Visit the documentation of this project to get more information in detail.

Features 👓

  • Easy structure
  • Authentication
  • Automatic and easy deployment to Railway.app
  • Test cases

About this Project 💡

This project has two modules as following:

  • data: Data source and operations.
  • application: Ktor application entry point and API routes.

Development Setup 🖥

You will require latest stable version of JetBrains IntelliJ Idea to build and run the server application.

  • Import this project in IntelliJ Idea
  • Build the project.
  • Set environment variables for the :application:run configuration as following

Refer to the .env file for example of environment variables.

SECRET_KEY=ANY_RANDOM_SECRET_VALUE

PGPORT=5432
PGHOST=localhost
PGDATABASE=notykt_dev_db
PGUSER=postgres
PGPASSWORD=postgres

DATABASE_DRIVER=org.postgresql.ds.PGSimpleDataSource
DATABASE_MAX_POOL_SIZE=10

Replace database credentials with your local config.

  • Run command ./gradlew :application:run.
  • Hit http://localhost:8080 and API will be live🔥.
  • You can find sample HTTP requests here and can directly send requests from IntelliJ itself.

Built with 🛠

  • Ktor - Ktor is an asynchronous framework for creating microservices, web applications, and more. Its fun, free, and open source.
  • Exposed - An ORM/SQL framework for Kotlin.
  • PostgreSQL JDBC Driver - JDBC Database driver for PostgreSQL.
  • Testcontainer - Testcontainers is a Java library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
  • Kotest - Kotest is a flexible and comprehensive testing project for Kotlin with multiplatform support.

REST API Specification

You can navigate to /http and try API calls in IntelliJ Idea IDE itself after API is running.

Authentication

Register

POST http://localhost:8080/auth/register
Content-Type: application/json

{
    "username": "test12345",
    "password": "12346789"
}

Login

POST http://localhost:8080/auth/login
Content-Type: application/json

{
    "username": "test12345",
    "password": "12346789"
}

Note Operations

Get all Notes

GET http://localhost:8080/notes
Content-Type: application/json
Authorization: Bearer YOUR_AUTH_TOKEN

Create New Note

POST http://localhost:8080/note/new
Content-Type: application/json
Authorization: Bearer YOUR_AUTH_TOKEN

{
  "title": "Hey there! This is title",
  "note": "Write note here..."
}

Update Note

PUT http://localhost:8080/note/NOTE_ID_HERE
Content-Type: application/json
Authorization: Bearer YOUR_AUTH_TOKEN

{
  "title": "Updated title!",
  "note": "Updated body here..."
}

Delete Note

DELETE http://localhost:8080/note/NOTE_ID_HERE
Content-Type: application/json
Authorization: Bearer YOUR_AUTH_TOKEN