The lab had a requirement to publicly offer dataset downloads while also tracking how many people have downloaded the data, leading to this project.
CITE Lab MoCap and Humanoid Group Download Center


Initially, I planned to use FastAPI + SQLite—my preferred stack—and fed the following prompt directly into AI (Claude 3.7 Sonnet), which produced a surprisingly usable result. However, two bugs emerged: one was that SMTP email sending wasn’t using encryption, and the other was that NJU Box used an outdated version, requiring manual lookup of the corresponding Seafile API.
However, the resulting interface was mediocre, and many features were hard to scale. So I decided to refactor the project using more advanced tools like Next.js. But whether I asked the AI to refactor existing code or start from scratch with prompts, the results were poor—often including compilation errors rather than runtime issues. I also tried several latest AI IDEs, but they didn’t deliver satisfactory outcomes.
In the end, human effort was unavoidable. I spent a full day manually setting up the framework, then gradually fed each file from the original FastAPI implementation into the AI, asking it to reference and complete the corresponding functionality in the current Next.js project. Then, step by step, I guided it to improve small features, fixing bugs manually along the way, until finally achieving the result seen in the two images above.
Current Features:
@Que: "There's no bad AI—only humans who aren't stubborn enough."
Help me build a web-based lab download center using fastapi, JavaScript, and related technologies. The website should include the following features:
1. Use the Seafile API on the backend to retrieve files in the repository. On the frontend, display a dropdown menu showing all available files for users to select.
2. On the second row of the frontend, users must enter their email address, which must be an academic or educational email. To the right of the input field is a "Send Verification Code" button. When clicked, the backend sends a verification code via SMTP server to the user's email. Both frontend and backend must validate the email format, and each IP address can only send one email per minute.
3. The third row requires users to enter the verification code.
4. The fourth row asks for the user’s university/institution.
5. The fifth row asks for the user’s full name.
6. All input fields must be non-empty. Both frontend and backend must perform validation to prevent malicious submissions.
7. The final row contains a submit button. After clicking, if the verification code is correct, the backend uses the Seafile API to generate a shared link for the selected file, sends the link to the user’s email, and automatically redirects the frontend to that link.
8. At the same time, the backend inserts a record into the SQLite database containing the file name, email, institution, name, shared link, and submission time.
9. The interface must be in English.
10. The page should be as visually appealing as possible.
11. Finally, write a Dockerfile to package the entire project into a single container image.