[{"data":1,"prerenderedAt":91},["ShallowReactive",2],{"mdc--l1mu4e-key":3,"mdc--icpgsz-key":16,"mdc-fz73d-key":25,"mdc--hl5bki-key":34,"mdc--9zyd0u-key":43},{"data":4,"body":5},{},{"type":6,"children":7},"root",[8],{"type":9,"tag":10,"props":11,"children":12},"element","p",{},[13],{"type":14,"value":15},"text","Separate public portal, field dashboard, payment service and bots",{"data":17,"body":18},{},{"type":6,"children":19},[20],{"type":9,"tag":10,"props":21,"children":22},{},[23],{"type":14,"value":24},"Nuxt 4, Vue, TypeScript and Tailwind",{"data":26,"body":27},{},{"type":6,"children":28},[29],{"type":9,"tag":10,"props":30,"children":31},{},[32],{"type":14,"value":33},"Firebase and Firestore",{"data":35,"body":36},{},{"type":6,"children":37},[38],{"type":9,"tag":10,"props":39,"children":40},{},[41],{"type":14,"value":42},"Stripe Connect and webhooks",{"data":44,"body":45},{},{"type":6,"children":46},[47,52,60,71,81],{"type":9,"tag":10,"props":48,"children":49},{},[50],{"type":14,"value":51},"Tactika connects booking a game with the daily operation of an airsoft field. For a player, the journey runs from finding an event to paying and presenting a QR ticket. For the field, that same reservation feeds capacity, attendance and the day's planning. The project remains in development.",{"type":9,"tag":53,"props":54,"children":59},"media",{"alt":55,"effect":56,"poster":57,"src":58},"Booking journey on the Tactika website","reveal","https:\u002F\u002Fres.cloudinary.com\u002Fddwpkkaqv\u002Fvideo\u002Fupload\u002Fso_4,w_1280,q_auto\u002F25tactika-0_l3b2vc.webp","https:\u002F\u002Fres.cloudinary.com\u002Fddwpkkaqv\u002Fvideo\u002Fupload\u002Fvc_h264,q_auto,w_1280\u002F25tactika-0_l3b2vc.mp4",[],{"type":9,"tag":61,"props":62,"children":65},"section",{"eyebrow":63,"title":64},"01","From a place to check-in",[66],{"type":9,"tag":10,"props":67,"children":68},{},[69],{"type":14,"value":70},"The portal lets players find fields and events and reserve places with extras such as rentals or food. The server calculates prices and availability; Stripe webhooks confirm payment. Pending unpaid reservations have a holding window so they cannot block capacity indefinitely.",{"type":9,"tag":61,"props":72,"children":75},{"eyebrow":73,"title":74},"02","Running the field",[76],{"type":9,"tag":10,"props":77,"children":78},{},[79],{"type":14,"value":80},"A separate dashboard brings together events, reservations, attendance, staff, stock and analytics. Permissions distinguish day-to-day tasks from financial management. QR check-in and reservation details are designed to support the team working on site.",{"type":9,"tag":61,"props":82,"children":85},{"eyebrow":83,"title":84},"03","Connected to the community",[86],{"type":9,"tag":10,"props":87,"children":88},{},[89],{"type":14,"value":90},"Telegram and Discord bots connect a field's channels to its announcements and events. Linked accounts let players start a reservation in the bot and continue payment through the website's existing flow. The bots share reservation logic rather than maintaining a second payment system.",1794317809960]