Short Video Content Distribution Platform Build Log: Recommendation Algorithm and Multi-language Frontend Deployment
Short Video Content Distribution Platform Build Log: Recommendation Algorithm and Multi-language Frontend Deployment Notes
Disclaimer: This article is for technical education and demonstration only. It is not professional or financial advice. Any real-world deployment must comply with applicable laws and regulations.
Last week I helped Lao Zhou, who runs a local lifestyle content account, deploy a short video content distribution system. He had built up more than a hundred thousand followers through WeChat official account articles, and now he wanted to get the vertical video line running. His requirements were pretty blunt: it had to work on Android, iOS, and PC, he wanted to control the recommendation slots himself from the admin panel, and he needed an opening for secondary development. The whole backend is written in C#. It took me about two and a half days to get the environment running end to end, so here is the process and the pitfalls I hit.

1. Hands-on Test: What This System Actually Does
Multi-client, same architecture, one login flow across three platforms
The Android client uses Kotlin with a player component, iOS uses Swift with the system player, and the PC client runs a web shell. All three share one JWT authentication layer and user system. I tested login state sync and it held up fine: after logging in on PC, the Android client only needs one token refresh to pick it up, no password re-entry. I set the default token lifetime to 7 days, and the refresh token lives in Redis, expiring automatically.
Recommendation feed and short link generation
The home page is a vertical swipe recommendation feed. During cold start it runs on rule-based weighting: content heat, completion rate, and publish time are scored across three dimensions, and each weight can be adjusted with a slider in the admin panel. The share button calls the backend short link service, which generates a 6-character base62 code and maps it to the original video URL stored in MySQL, so incoming clicks carry the source parameter. Lao Zhou’s original brief also mentioned auto-generated account identifiers. In this system that is a separate module that generates a user ID plus an invite code and issues it at registration. It runs on different logic from the short link service, so do not confuse the two.

2. Deployment Notes: Order of Operations from Backend to CDN
Align environment dependencies first
The backend is a .NET 8 WebAPI, the database is MySQL 8.0, and caching runs on Redis. On my first install I hit a snag: the server had the .NET 6 runtime, which threw a version incompatibility error immediately, and I only got it up after installing the 8.0 Hosting Bundle. Do not route video files through the backend for forwarding. Use direct upload to object storage plus HLS slicing. Once CDN origin fetching was configured, first-frame load dropped from over 2 seconds to roughly 400ms.
Admin controls and payment interfaces
The admin panel has what you would expect: a content review queue, tag management, recommendation weights, and gray release switches. For review, I would suggest running manual and machine review in parallel. Machine review should only handle frame captures and sensitive words, so don’t count on automatic approval alone. The payment interface leaves reserved slots for Alipay and WeChat Pay. Callbacks need signature verification plus order idempotency. I fired the same order’s callback five times in a row, and the order status was never written twice, so that logic is solid. Tips and membership run on different order tables, so be careful not to mix them during secondary development.
3. Secondary Development and Multi-language Extension
Multi-language support uses a resource bundle approach. Chinese, English, and Arabic bundles sit in separate directories, the frontend switches automatically based on system language, and the admin panel can override the choice manually. For Arabic, remember to switch the layout to RTL. I forgot in my first version and the entire home page came out mirrored, which took two lines of style changes to fix. The secondary development API docs are reasonably clear: the content table, user table, and recommendation weight table all have comments, and adding custom fields only needs a migration script, with no changes to the core logic.

Highlight: recommendation weights and gray release switches are stored in Redis, so changes take effect within 30 seconds and you don’t have to restart the service. Before going live, persist this configuration once. I learned that the hard way when Redis restarted and every weight went back to its default value.
Frequently Asked Questions
Q: Do you have to maintain three separate codebases for the three clients?
A: No. Push as much business logic as possible down into the backend APIs. The frontend only handles rendering and playback, so each client maintains just its player and list components, which keeps the change footprint very small.
Q: Do I need to train my own model for the recommendation algorithm?
A: Not in the early stage. Rule-based weighting plus a trending list is enough to get through cold start. Wait until your content volume passes ten thousand items before considering a model. Otherwise you don’t have enough data, and what you train is less stable than the rules.
Q: Do I need to restart the service after changing recommendation weights in the admin panel?
A: No. The configuration lives in Redis and the service pulls it on a timer, which I measured at under 30 seconds. Just remember to enable persistence, or a cache restart will wipe the configuration.
Q: Can I integrate just one payment channel?
A: Yes, but I would leave room for at least two. Write the callback signature verification and idempotency logic up front, and adding another channel later won’t require touching the main flow.

Who This Suits
This setup fits teams that already have a content source and want to build their own distribution channel, such as local lifestyle media, knowledge and science content, or corporate training. I would not recommend it to complete beginners. At minimum you need someone who can read C# code and understand SQL errors. One more reminder: deployment and use must comply with laws and regulations, unlawful use of any kind is prohibited, and don’t cut corners on content review. This article is for technical education only.
Disclaimer: This article is for technical education and demonstration only. It is not professional or financial advice. Any real-world deployment must comply with applicable laws and regulations.
#short video system #recommendation algorithm #C# backend #multi-client development #deployment log
-
Alipay QR Code Scan
-
WeChat Scan Pay