| Age | Commit message (Collapse) | Author |
|
Set up the client-side React application with Vite bundler:
- Add React 19 and Vite 7 with the React plugin
- Create index.html entry point and App component
- Configure Vite with API proxy to backend server
- Add client build scripts to package.json
- Update tsconfig for React JSX and DOM types
- Fix TypeScript errors in auth code (JWT_SECRET type narrowing)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
|
|
|
|
Add repository types and implementations to abstract database operations,
improving testability and separation of concerns. The auth routes now use
dependency injection with UserRepository and RefreshTokenRepository
interfaces, making tests simpler by mocking interfaces instead of Drizzle
query builders.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
Add comprehensive tests for POST /refresh endpoint covering:
- Valid refresh token returns new access/refresh tokens
- Invalid refresh token returns 401
- Expired refresh token returns 401
- User not found returns 401
- Missing/empty refresh token returns 422
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
Add middleware that validates JWT tokens from Authorization header
and sets authenticated user in request context. Includes helper
function getAuthUser() to retrieve user from context with proper
error handling.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
Implement refresh token functionality for authentication:
- Add refresh_tokens table to database schema with user reference
- Generate migration for the new table
- Login endpoint now returns both access token and refresh token
- Add POST /api/auth/refresh endpoint with token rotation
- Refresh tokens are hashed (SHA256) before storage for security
- Tokens expire after 7 days, access tokens after 15 minutes
- Update tests to cover new functionality
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
|
|
Implement POST /api/auth/login endpoint that validates credentials
and returns a JWT access token on successful authentication.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
Implement POST /api/auth/register endpoint with:
- Argon2 password hashing
- Zod validation for username (1-255 chars) and password (8-255 chars)
- Duplicate username check (returns 409 Conflict)
- Returns created user with id, username, and createdAt
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
Add Zod validation schemas for all data models (User, Deck, Card,
ReviewLog) along with input schemas for API endpoints (create, update,
login, submit review).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
Add TypeScript type definitions for core data models used across client
and server. Types are consistent with Drizzle schema defined in server.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
Generate initial migration file for all schema tables (users, decks,
cards, review_logs) using Drizzle Kit.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
Add Drizzle ORM with PostgreSQL for database access. Includes:
- Schema definitions for users, decks, cards, and review_logs tables
- Database connection with node-postgres driver
- Drizzle Kit configuration for migrations
- npm scripts for db:generate, db:migrate, db:push, db:studio
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
Add docker-compose.yml with PostgreSQL 17 Alpine image for local development.
Includes healthcheck, volume persistence, and environment variable configuration.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
Use Hono's built-in logger middleware to log HTTP requests with method,
path, status, and response time.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
Add global error handling middleware for Hono with:
- AppError class for application-specific errors with status codes
- Errors factory for common HTTP errors (badRequest, unauthorized, etc.)
- Consistent JSON error response format
- Tests covering all error types
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
Add tests for the root endpoint and /api/health endpoint
to verify the Hono server is working correctly.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
Add Vitest as the test runner for the server package with configuration
for global test APIs. Update root package.json to run tests across all
packages.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
Setup basic Hono server with health check endpoint. Adds dev, build,
and start scripts using Node.js native TypeScript execution.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
Add Biome for linting and formatting with recommended rules.
Reformat existing JSON files to use tabs.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
|
|
|
|
|
|
|