Files
VDM/todo.md
T

2.4 KiB

VDM Project To-Do List

This document tracks major functional, operational, and architectural improvements for the VDM server. Unlike roadmap.md, this list is focused on engineering and deployment tasks rather than user-facing gameplay features.


1. Production-Ready Web Server & SSL

Goal: Move beyond the development server and mkcert to a proper, secure production setup.

  • [ ] Reverse Proxy: Deploy the application behind a production-grade reverse proxy like Nginx or Caddy. This is the standard for web applications, providing better performance, security, and stability than running Uvicorn directly exposed to the internet.
  • [ ] Proper SSL: Use the reverse proxy to manage SSL certificates automatically with Let's Encrypt. This will provide a real, trusted certificate for any domain the application is hosted on, removing the need for mkcert.
  • [ ] Process Management: Use a process manager like Gunicorn to run the FastAPI application, allowing for multiple worker processes and better resource management.

2. Docker Support

Goal: Containerize the entire application for easy, reproducible, and isolated deployments.

  • [ ] Create a Dockerfile: Define the environment for the VDM server, including the Python version, dependency installation from requirements.txt, and the command to run the server.
  • [ ] Create a docker-compose.yml: Write a Compose file to make it trivial to start the entire application stack (the VDM server and potentially its databases) with a single docker-compose up command. This dramatically simplifies setup for new developers and production environments.

3. Modern Frontend Framework Migration

Goal: Rebuild the frontend using a modern JavaScript framework to improve scalability, maintainability, and the developer experience.

  • [ ] Choose a Framework: Evaluate and select a framework. React (with Vite for the build tool) is a strong contender due to its vast ecosystem and component-based architecture, which is a perfect fit for our UI.
  • [ ] Component-Based Refactoring: Break down the existing HTML and JavaScript into reusable components (e.g., ChatLog, PlayerList, MessageInput).
  • [ ] State Management: Replace the current manual state object with a dedicated state management library like Zustand or Redux Toolkit for a more robust and predictable UI.