The BattleTech MechLab is a T3 Stack app inspired by the MechLab in MW5: Mercenaries, intended to be used with the BattleTech table top miniatures game. You can build any BattleMech you like in a very similar way to how you build them in MW5 with drag and drop functionality.
I've always preferred to build mechs this way rather than the step by step process that exists in the BattleTech Tech Manual.
Currently the app is only intended to allow the building of BattleMechs. Eventually, it would be my intent to be able to build any type of mech or vehicle for BattleTech Total Warfare.
Most, if not all, of the technologies used are the same technologies that are used by the T3 Stack. We are not necessarily using the same versions as what the T3 Stack uses, although most tech is the same. If you want to learn about any of the tech used, reference the links provided in the list below.
To learn more about the T3 Stack, take a look at the following resources:
- Documentation
- Learn the T3 Stack — Check out these awesome tutorials
You can check out the create-t3-app GitHub repository — your feedback and contributions are welcome!
- show calculated battle value in mech build summary
- Ensure installed equipment persists after refresh for WIP mech in mech builder
- ensure mech persisted in local storage is per user
- Fix issue with mech builder not representing state correctly on no cache refresh
- Redesign weapon create/edit form (modal?)
- Routing/weapon details page (modal?)
- Analytics (posthog)
- Ratelimiting (upstash)
- Configure Lighthouse CI metrics
- Finish mobile menu
- Update site favicon
- prevent installation of arm actuators if resulting critital slots will be negative
- Implement weapon ammunition in mech builder
- Implement basic cockpit in mech builder
- Implement gyroscope in mech builder
- Implement jump jets in mech builder
- Max armor button should correctly calculate mech weight including engine, weapons, and equipment
- Show movement speed in mech build summary component
- Remove all unused logic for equipment slot installed actuators
- arm actuator adjustments using checkbox (not from db)
- Correctly calculate tonnage on remove all equipment for large engines with >10 heat sinks
- Correctly calculate tonnage for external heat sinks below 10 total heat sinks
- Downgrading engine full of heat sinks correctly updates mech cooling
- Correctly calculate tonnage for engine heat sinks
- Implement mech engine tonnage in mech builder
- Correctly calculate cooling for engine heat sinks
- Implement integrated engine heat sinks
- Implement engines in mech builder
- Implement lower arm actuators in mech builder
- Implement hand actuators in mech builder
- Implement heating per turn in mech builder summary
- Implement location mounted additional heat sinks in mech builder
- Fix weapon form not submitting due to missing default values
- Set up pagination for mech builder equipment list
- Get filters on mech builder working
- Mech weapon colors persist when placed in locations
- Implement colors for different weapon types in mech builder
- Add filters to the equipment list on the mech builder
- Enable Equipment list loading from the db for weapons
- Enable weapon table filtering based on WeaponType/TechRating
- Add weapon type
category/subcategoryvia db schema (add to weapon form and weapon table) - Add tech rating to weapons via db schema (add to weapon form and weapon table)
- Add max armor, strip equipment,
strip armor,and strip mechbuttons - Disable increase/decrease armor buttons when they would not do anything
- Ensure mech weight is updated when adding/removing armor
- Get add and remove armor buttons working in mech builder on mech locations
- Add armor to mech locations in mech builder
- Syle internal structure rendering
- Add internal structure to mech locations in mech builder
- Weapons add/remove their weight to currentMechTonnage state variable
- Implement weight allowance for mech in mech builder
- Implement edit weapon form (same as create weapon form)
- Migrate project to use ESLint v9
- Fix issue with data table row resize due to row actions dropdown
- Remove caching to fix invalid data type issue
- Migrate project to use tailwind v4
- Fix button child of button hydration error on /weapons page
- Switch to using a dropdown menu for data table row actions
- Add caching to get all weapons call for weapons page
- Highlight the mech location that the dragged item would go to if dropped
- Create a toaster UI element that displays an error to user when equipping item doesn't work
- Fix incorrect display of mech equipment location name
- Prevent resizing of mech equipment locations during drop event
- Implement react app state using
zustand - Add ability to remove equipment item
by right clicking when equippedusing remove button - Get equipped items to display as correct height (take multiple critical slots, no resize of location)
- Get equipped items to display as correct style (color, fit single slot)
- Get dropped equipment item to display in the correct equipment location
- Add basic drag and drop functionality for mech equipment into builder location
- Add all locations for mech in mech builder component
- Create component to display mech equipment by location (i.e. right arm, right torso, etc.)
- Create initial mech equipment inventory list for mech builder page
- Style alert dialog for deleting weapon
- Add tooltips to DataTable UI buttons (especially row actions section)
- Require admin for new weapon form and weapon table new button
- Get weapon form to actually create a new item in the DB
- Fix weapon form field validation for number fields
- Add creation form for new weapon
- Add delete/copy weapon buttons to weapon list (w/ Server Actions)
- Only show weapon table row actions for admin
- Create site header component that will contain TopNav and mobile menu
- Fix weapon table row height
- Generate zod schemas for weapons using drizzle-zod
- Extract out components from the DataTable base component
- Add column visibility toggling to weapons table
- Add filtering to weapons table
- Add sorting buttons to weapons table columns
- Add pagination to weapons table
- Use shadui to display list of weapons
- Add weapon list page
- Error management (w/ Sentry)
- Create weapon DTO in NextJS data layer
- Create auth access in NextJS data layer
- Add authentication (w/ clerk)
- Attach database to UI
- Actually set up a database (vercel postgres)
- Tidy up build process
- Scaffold basic ui with mock data
- Make it deploy (vercel)