crystal_todo_list
Version, currently main branch1 version
- main branchlatestOct 26, 2025
github.com/sebyx07/crystal-react-todo-lucky
Todo list built with crystal and react
Installation
# Add this to your shard.yml
dependencies:
crystal_todo_list:
github: sebyx07/crystal-react-todo-lucky
branch: mainmain is a branch, not a release, so this tracks it rather than pinning a version.
Then run:
shards installshard.yml
- Crystal
>= 1.18.2- Target
crystal_todo_listfrom src/crystal_todo_list.cr
Dependencies
Runtime Dependencies
- jwt~> 1.6.1github: crystal-community/jwt
- avram~> 1.4.0github: luckyframework/avram
- lucky~> 1.4.0github: luckyframework/lucky
- carbon~> 0.6.0github: luckyframework/carbon
- authentic>= 1.0.2, < 2.0.0github: luckyframework/authentic
- lucky_env~> 0.3.0github: luckyframework/lucky_env
- lucky_task~> 0.3.0github: luckyframework/lucky_task
- carbon_sendgrid_adapter~> 0.6.0github: luckyframework/carbon_sendgrid_adapter
Development Dependencies
- lucky_flow~> 0.10.1github: luckyframework/lucky_flowdev
README
๐ Crystal Todo List
A modern todo list application built with Lucky Framework, Crystal, and React.
โจ Features
- โ Full CRUD operations for todos
- ๐ Mark todos as completed/pending
- ๐ Edit todos inline
- ๐ User authentication (JWT + Sessions)
- โก React 19 SPA with React Compiler optimization
- ๐จ Bootstrap 5 UI
- ๐๏ธ PostgreSQL database
- ๐งช Full test coverage (Frontend + Backend)
- ๐ณ Docker support for development
- ๐ Optional SSL/TLS support
๐ Tech Stack
- Backend: Crystal 1.18.2 + Lucky Framework 1.4.0
- Frontend: React 19 + TypeScript + React Compiler
- Database: PostgreSQL 14
- Runtime: Bun v1.3.1 (assets & tests)
- Styling: Bootstrap 5 + Sass
- Testing: Crystal Spec + Vitest + React Testing Library
๐ ๏ธ Quick Start (Docker - Recommended)
All development is done via Docker Compose using the bin/ scripts:
# Start the development server (includes database setup)
bin/dev
That's it! The app will be available at http://localhost:3000 (or https://localhost:3000 with SSL)
๐ณ Available Commands
All scripts automatically handle Docker Compose for you:
# Development
bin/dev # Start development server with hot reload
# Testing
bin/spec # Run all specs (Backend + Frontend)
bin/spec spec/requests/todos/ # Run specs in directory
bin/spec spec/requests/todos/index_spec.cr # Run specific file
# Linting & Formatting
bin/lint # Auto-format all files (Crystal + JS/TS)
bin/lint --check # Check formatting without modifying
๐๏ธ Database
PostgreSQL runs in Docker via docker compose:
- Not exposed to host (secure by default)
- Accessed via container network only
- Automatically managed by bin scripts
โ๏ธ Environment Configuration
The application uses .env.development.local for local development settings:
- APP_DOMAIN: dev-1.venom.is (for production SSL)
- PORT: 5000 (container-to-container port)
- DATABASE_URL: Automatically set by bin scripts
For SSL/TLS configuration, see docs/ssl-setup.md
๐ API Endpoints
Authentication:
POST /api/sign_ins- Sign in (returns JWT token)POST /api/sign_ups- Create accountDELETE /api/sign_ins- Sign out
Todos:
GET /api/todos- List todos (paginated, sorted by updated_at desc)POST /api/todos- Create a new todoPATCH /api/todos/:id- Update a todoDELETE /api/todos/:id- Delete a todo
๐ป VSCode / code-server Setup
The project includes full VSCode/code-server configuration:
Quick setup:
bin/setup-vscode
This configures:
- โ Crystal language server with Docker integration
- โ Syntax highlighting and IntelliSense
- โ Format on save
- โ Jump to definition
- โ Integrated tasks (Ctrl+Shift+B to run dev server)
- โ Test runner (Ctrl+Shift+T)
- โ Debugging support
Available tasks (Ctrl+Shift+P โ "Tasks: Run Task"):
- Run All Tests
- Run Current Test File
- Start Development Server
- Format Code
- Check Code Format
- Run Database Migrations
- Docker Compose Up/Down
Files:
.vscode/settings.json- Crystal LSP and editor config.vscode/tasks.json- Integrated tasks.vscode/launch.json- Debug configurations.vscode/extensions.json- Recommended extensions.editorconfig- Cross-editor formatting
๐ Learning Resources
Lucky uses the Crystal programming language. You can learn about Lucky from the Lucky Guides.
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This branch
- Branch
main- Seen
- Oct 26, 2025
- Crystal
>= 1.18.2- Indexed
- yes
Dependents
No indexed shard depends on this one yet.
Repository
github.com/sebyx07/crystal-react-todo-lucky
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 15, 2026
- Synced
- Aug 15, 2026
- Versions
- 1