Implemented issue #9 - Frontend Project Setup with Svelte and TypeScript. Changes: - Created SvelteKit project with TypeScript - Set up routing structure: - / (landing page) - /login - /register - /dashboard - /bot/[id] - /bot/[id]/backtest - /bot/[id]/simulate - /settings - Created Svelte stores for state management: - userStore - Current user info - botsStore - List of user's bots - currentBotStore - Selected bot - chatStore - Chat messages - backtestStore - Backtest results - simulationStore - Simulation signals - authStore - Authentication state - Created API client for backend communication - Set up environment variables (.env.example) - Created auth store with protected routes and login/register functionality
46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
import { writable } from 'svelte/store';
|
|
import type { Simulation, Signal } from '$lib/api';
|
|
|
|
export interface SimulationState {
|
|
currentSimulation: Simulation | null;
|
|
signals: Signal[];
|
|
isLoading: boolean;
|
|
error: string | null;
|
|
}
|
|
|
|
const initialState: SimulationState = {
|
|
currentSimulation: null,
|
|
signals: [],
|
|
isLoading: false,
|
|
error: null
|
|
};
|
|
|
|
export const simulationStore = writable<SimulationState>(initialState);
|
|
|
|
export function setCurrentSimulation(simulation: Simulation | null) {
|
|
simulationStore.update(state => ({ ...state, currentSimulation: simulation }));
|
|
}
|
|
|
|
export function addSignals(newSignals: Signal[]) {
|
|
simulationStore.update(state => ({
|
|
...state,
|
|
signals: [...state.signals, ...newSignals]
|
|
}));
|
|
}
|
|
|
|
export function clearSignals() {
|
|
simulationStore.update(state => ({ ...state, signals: [] }));
|
|
}
|
|
|
|
export function setSimulationLoading(loading: boolean) {
|
|
simulationStore.update(state => ({ ...state, isLoading: loading }));
|
|
}
|
|
|
|
export function setSimulationError(error: string | null) {
|
|
simulationStore.update(state => ({ ...state, error }));
|
|
}
|
|
|
|
export function clearSimulationState() {
|
|
simulationStore.set(initialState);
|
|
}
|