Work

WeChat mini program for class booking

Django + MySQL. Members book and check in without leaving WeChat.

A class-booking product for a dance studio that already lives in WeChat. Members book, cancel, and check in on the phone. Membership cards carry remaining sessions or a validity window. Staff run campuses, teachers, the timetable, and the cards from a Django admin. One codebase, one set of rules. Python, Django, MySQL. Source handed over with the project.

The job

The studio needed members to book without installing another app, and the front desk to see who is coming and who showed up. Cards had to deduct sessions or expire on a date. Teachers needed their own view of the day. Campuses, styles, and class formats had to be editable without a developer. The product had to feel local: WeChat login, Chinese copy, QR check-in, and the way a dance studio in China actually runs a week.

What members do

  • Open the mini program in WeChat and sign in

  • See banners, campuses, teachers, and the timetable

  • Filter by date, teacher, dance style, and teaching format

  • Book a class against a card that is allowed for that session

  • Cancel inside the window the studio set

  • Check in on arrival, from the phone or from a class QR code

  • See their cards, remaining sessions, booking history, and cancellations

Session cards deduct remaining classes when the booking is confirmed. Time cards work until the expiry date. If a card is empty, expired, or not allowed on that class, booking stops. If the room is full, the slot closes. The same rules apply in the admin, so a card that cannot book on the phone cannot be forced through the back office either.

Cards

Card types are maintained in admin: name, sort order, and charge type — count or time. Each scheduled class lists which card types may book it. When a member holds more than one card, the system picks the one the studio ranked first. Cards can be transferred between members. Staff can extend a batch of orders when a holiday or a studio closure eats into validity. Audit status sits on the order, so an unapproved card does not spend.

What staff do

  • Publish campuses, photos, and contact details

  • Maintain dance styles and teaching formats as a two-level catalog

  • Create courses and batch-add sessions to the timetable

  • Mark a session as regular or intensive; intensives deduct on enrolment

  • Assign teachers, rooms, times, and which cards are valid

  • Issue, audit, transfer, and extend membership cards

  • Check members in at the desk if the phone flow is skipped

  • See a calendar and a booking chart for the week

Teachers are bound to a WeChat account. They can be allowed to book, and allowed to see their own appointment list, without opening the full admin.

How it is put together

The mini program talks to a Django API. WeChat handles identity and, where the studio needs it, payments and SMS. Redis holds WeChat access tokens. MySQL holds members, cards, classes, and attendance. Class QR codes are generated from the WeChat API so check-in does not depend on a paper list. The admin is SimplePro on the same Django project — campuses, catalog, timetable, cards, and the dashboard in one place.

Handover is the repo, a runbook, and the WeChat app credentials the studio already owns. If they later add a waitlist, a second city, or another card type, the same Django app can take it. The source is theirs.

64f765853192b1b746aa01a96198a9db.jpg

Get started

Discuss a similar project

Tell us what is in China, what is remote, and what done looks like. We reply by email or WhatsApp.

  • On-site anywhere in China
  • Remote everywhere else
  • 24/7 on-call for incidents