Case study · product published by Sanfytech

Anchora, our spaced repetition app for dancers.

Dancers film their classes and never watch them again. Anchora cuts the videos into passages, puts each one back in front of the dancer just before it would be forgotten, and finds their competition results. Live at anchora.dance, by invitation only.

01/BackgroundWhere we started

Dozens of hours of class videos, and nobody watches them again

We wrote Anchora for a need we know from the inside. On the left, the problem as dancers live it; on the right, what the app does today.

  1. 01Three weeks after a workshop that taught ten figures, the dancer practises two of them.Each passage comes back on the date it is likely to be forgotten, calculated by the field's reference spaced repetition algorithm.
  2. 02The videos stay whole on the phone, and finding a single figure in them is impossible.The player slows down, loops and steps frame by frame; the loop is used to cut out the passage, which keeps its origin: the video, the class, the teacher.
  3. 03Competition results are public, but copied out by hand, or never.An event is imported once; the dancer identifies themselves by bib number or name, and their record fills itself in.
  4. 04Reviewing takes regularity, and apps punish the missed day.Daily streak, levels and a leaderboard among friends, without ever taking a point away; daily budgets cap the session.
02/What we builtDelivered so far

From raw footage to today's review, in a single app

Import, cut, review, follow your competitions: every step is in Anchora, and each one fits on a phone.

  • 01
    Video import. Direct upload, a YouTube or Vimeo link, or an album from a personal Immich gallery; conversion and thumbnails are done on the server.
  • 02
    Practice player. Slow motion, a loop between two markers, frame by frame, counts shown on the video, notes on the timeline, by keyboard or by thumb.
  • 03
    Passages. Cut from the loop, linked to their class and teacher, sorted by priority, added to the review queue.
  • 04
    Daily review. The passage plays in a loop, the dancer answers Again, Hard, Good or Easy, and the next date is recalculated automatically.
  • 05
    Memory engine. The FSRS algorithm, the reference in the field, checked on every code change against the test cases of the official implementation.
  • 06
    Competitions. Result sheets imported once for every account; placings calculated even in the first round, relative to the number of entrants.
  • 07
    Regularity. Streak, levels, badges, a weekly leaderboard among friends and a practice log; no punitive mechanics.
  • 08
    Settings and data. Target retention, daily budgets, engine optimisation on your own history, export and deletion from the account.
03/Four screensDemo account, videos blurred

Four screens, actual size

Screenshots of the app in service. E-mail addresses are replaced with a demo address; every video image is blurred, as the people filmed have not agreed to appear here. The interface stays sharp.

Anchora dashboard: clips to review today, streak, level, latest videos and recent competitions, video thumbnails blurred
Screen 01Anchora's home screen. Video thumbnails blurred, demo e-mail address.

One piece of information on opening: how many passages to review

The dashboard starts with the number of passages due today and a single button. Everything else (streak, level, latest videos, upcoming competitions) comes below, because that is not what brings people back.

Anchora review screen: video player on a loop, image blurred, and the four answers Again, Hard, Good, Easy
Screen 02The review screen. The video image is blurred for this page; in the app, it is the dancer's own passage that plays.

Four buttons, and the next date calculates itself

This is the screen users see every day. The passage plays in a loop, the dancer tries to repeat it, then answers with one tap. No interval to set, no scheduling by hand.

Grid of passages cut in Anchora: blurred thumbnails, duration, passage name, source file, priority and queueing
Screen 03The passages from one class, sorted by priority. Thumbnails blurred, file names kept.

Every passage knows where it comes from

A passage keeps its video, its class and its teacher. The cutting queue lists what is left to process, so that an imported video does not get lost at the back of the library.

Results and progress in Anchora: number of events, finals, podiums, best placing, and a month-by-month timeline of competitions
Screen 04Results and progress, rebuilt from the imported sheets. The account belongs to one of the co-founders; his competitor number is blurred.

A competition record that fills in without typing

The dancer identifies themselves once. Past and future results come in automatically, grouped by division despite spelling variations from one event to the next. One button sets aside a namesake.

04/TechnologiesWhat we chose, and why

The architecture we deploy for our clients, under real conditions

Anchora runs what we sell: .NET architecture, Next.js interface, automated delivery, our own hosting, with real users and real invoices.

  • InterfaceNext.js; the browser only talks to a front layer, and the API is never exposed to the Internet.
  • Server.NET 10 API in separate layers; four test suites, including the reference cases of the memory engine.
  • VideoConversion, thumbnails and metadata by ffmpeg on the server; playback through short-lived signed URLs.
  • DatabasePostgreSQL, backed up every day; data export and deletion from the account.
  • HostingOn our servers in France, private network, a single HTTPS entry point; videos on a dedicated volume, separate from the system.
  • DeliveryImages published to our private registry, automatic deployment with a blocking health check, secrets kept out of the repository.
05/Further readingThe product website

For a dancer, the Anchora website; for a product like this one, us

What next

A product to design, host and keep running?

Anchora grew out of a practice we know well. Tell us about yours, and we will tell you what is feasible, with a timeline and a rough price.

Discuss your project

Reply within 24 working hours, from one of the two founders. Or by phone: +33 7 59 96 14 99.