implement backend skeleton with MongoDB and Claude AI integration

- Add controllers (Auth, Chat, Event) with placeholder implementations
- Add services (Auth, Chat, Event) with business logic interfaces
- Add repositories with MongoDB/Mongoose models (User, Event, Chat)
- Add middleware for JWT authentication
- Add Claude AI adapter implementing AIProvider interface
- Add utility modules for JWT and password handling
- Add shared types and DTOs for User, CalendarEvent, ChatMessage
- Configure routes with proper endpoint structure
- Update app.ts with dependency injection setup
- Add required dependencies: mongoose, bcrypt, jsonwebtoken, @anthropic-ai/sdk
This commit is contained in:
2026-01-02 20:09:42 +01:00
parent 5af6cffa9c
commit 5cc1ce7f1c
47 changed files with 1397 additions and 13 deletions

View File

@@ -0,0 +1,33 @@
export interface CalendarEvent {
id: string;
userId: string;
title: string;
description?: string;
startTime: Date;
endTime: Date;
note?: string;
isRecurring?: boolean;
recurrenceRule?: string;
createdAt?: Date;
updatedAt?: Date;
}
export interface CreateEventDTO {
title: string;
description?: string;
startTime: Date;
endTime: Date;
note?: string;
isRecurring?: boolean;
recurrenceRule?: string;
}
export interface UpdateEventDTO {
title?: string;
description?: string;
startTime?: Date;
endTime?: Date;
note?: string;
isRecurring?: boolean;
recurrenceRule?: string;
}

View File

@@ -0,0 +1,46 @@
import { CreateEventDTO } from './CalendarEvent';
export type MessageSender = 'user' | 'assistant';
export interface ChatMessage {
id: string;
conversationId: string;
sender: MessageSender;
content: string;
proposedEvent?: CreateEventDTO;
createdAt?: Date;
}
export interface Conversation {
id: string;
userId: string;
createdAt?: Date;
updatedAt?: Date;
}
export interface SendMessageDTO {
conversationId?: string;
content: string;
}
export interface CreateMessageDTO {
sender: MessageSender;
content: string;
proposedEvent?: CreateEventDTO;
}
export interface GetMessagesOptions {
before?: string; // Message ID - load messages before this one
limit?: number; // Default: 20
}
export interface ChatResponse {
message: ChatMessage;
conversationId: string;
}
export interface ConversationSummary {
id: string;
lastMessage?: ChatMessage;
createdAt?: Date;
}

View File

@@ -0,0 +1,25 @@
export interface User {
id: string;
email: string;
displayName: string;
passwordHash?: string;
createdAt?: Date;
updatedAt?: Date;
}
export interface CreateUserDTO {
email: string;
displayName: string;
password: string;
}
export interface LoginDTO {
email: string;
password: string;
}
export interface AuthResponse {
user: Omit<User, 'passwordHash'>;
accessToken: string;
refreshToken?: string;
}

View File

@@ -0,0 +1,3 @@
export * from './User';
export * from './CalendarEvent';
export * from './ChatMessage';