A production-ready To-Do list API built with:
- Scala (2.13)
- Akka HTTP (REST endpoints)
- Slick (Database access)
- PostgreSQL (Data persistence)
- CRUD Operations:
- Create, Read, Update, Delete todos
- Mark todos as complete
- RESTful API with proper HTTP status codes
- Database Integration with PostgreSQL
- JSON Serialization using Spray JSON
- Proper Error Handling
- Configuration Management with Typesafe Config
- Java 8+
- Scala 2.13.8
- sbt 1.6.2+
- PostgreSQL 12+
- (Optional) Docker for containerization
-- Create database
CREATE DATABASE tododb;
-- Connect to database
\c tododb
-- Create todos table
CREATE TABLE todos (
id SERIAL PRIMARY KEY,
title VARCHAR(255) NOT NULL,
description TEXT,
is_completed BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
);
-- Create index for better performance
CREATE INDEX idx_todos_completed ON todos(is_completed);