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:
@@ -2,7 +2,10 @@
|
||||
"name": "@caldav/shared",
|
||||
"version": "1.0.0",
|
||||
"private": true,
|
||||
"main": "./src/index.ts",
|
||||
"types": "./src/index.ts",
|
||||
"exports": {
|
||||
".": "./src/index.ts",
|
||||
"./*": "./src/*"
|
||||
}
|
||||
}
|
||||
|
||||
1
packages/shared/src/index.ts
Normal file
1
packages/shared/src/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export * from './models';
|
||||
33
packages/shared/src/models/CalendarEvent.ts
Normal file
33
packages/shared/src/models/CalendarEvent.ts
Normal 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;
|
||||
}
|
||||
46
packages/shared/src/models/ChatMessage.ts
Normal file
46
packages/shared/src/models/ChatMessage.ts
Normal 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;
|
||||
}
|
||||
25
packages/shared/src/models/User.ts
Normal file
25
packages/shared/src/models/User.ts
Normal 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;
|
||||
}
|
||||
3
packages/shared/src/models/index.ts
Normal file
3
packages/shared/src/models/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export * from './User';
|
||||
export * from './CalendarEvent';
|
||||
export * from './ChatMessage';
|
||||
Reference in New Issue
Block a user