Skip to content

Latest commit

 

History

History
137 lines (95 loc) · 3.52 KB

README.md

File metadata and controls

137 lines (95 loc) · 3.52 KB

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. It’s 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