Skip to content

Patdabaker/MBTLFrameData

Repository files navigation

MBTL Matchup Notes App

A deployed, authentication-backed full-stack web application for managing structured, per-character matchup analysis in Melty Blood: Type Lumina.

Overview

Competitive players often rely on large spreadsheets or scattered documents to track matchup knowledge across multiple characters. This application replaces that workflow with a structured, authenticated web interface supporting per-user, per-character, and per-matchup notes with persistent storage and filtering.

Key Features

  • User Authentication: Secure login with per-user persistent data.
  • Per-Character & Matchup Notes: Create, edit, and delete general and matchup-specific notes.
  • Dynamic Character Data: Loads character moves and metadata from JSON files.
  • Filtering & Search: Filter moves by name or notes presence.
  • Data Pipeline: Spreadsheet → JSON workflow for maintainable character data updates.
  • Deployed Web App: Hosted publicly for continuous access and testing.

Tech Stack

  • Backend: Python, Flask
  • Database: SQLite (development), SQLAlchemy ORM
  • Authentication: Flask-Login
  • Frontend: HTML, CSS, JavaScript (Jinja2 templating)
  • Data Processing: Python (spreadsheet-to-JSON pipeline)
  • Deployment: Render

Architecture Overview

  • Backend structured using MVC-style separation of routes, templates, and data models.
  • Relational data model linking Users → Characters → Matchups → Notes.
  • SQLAlchemy ORM used to prevent ID collisions and ensure per-user data isolation.
  • JSON-driven character data pipeline to decouple static game data from user-generated content.
  • Enabled separation of static game data and user-generated content to allow independent updates and scalability.

Engineering Challenges & Design Decisions

  • Designed relational data models to support per-user, per-character, and per-matchup notes while preventing ID collisions and ensuring data isolation.
  • Implemented dynamic UI state management to prevent DOM conflicts when switching between character perspectives and matchup contexts.
  • Built a reusable spreadsheet-to-JSON ingestion pipeline to separate static domain data from user-generated content.
  • Architected persistent session management using Flask-Login and SQLAlchemy for authenticated state continuity.

Screenshots

login matchupview notesediting

Live Demo

Live Demo (desktop-optimized):
https://mbtlmatchupnotes.onrender.com/

Local Setup

git clone https://github.com/Patdabaker/MBTLFrameData.git
cd MBTLFrameData
pip install -r requirements.txt
flask run

Future Improvements

  • Mobile-responsive layout
  • Expanded character dataset
  • Advanced filtering and tagging
  • User data export

License

MIT

About

This will be a project using frame data from MBTL.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors