You are browsing as a guest. Sign up (or log in) to start making projects!

Makerlife

@Makerlife

Joined May 31st, 2026

  • 3Devlogs
  • 1Projects
  • 1Ships
  • 15Votes
Ship

First release!

In this update, I’ve strengthened backend authentication, added S3 support, and made some frontend optimizations.

You can log in to the site at demo/demo for a temporary preview. Please note that since my site retrieves and processes data from a third-party website, some content may still be in Chinese, and certain features may not be available with the shared account.

Since WAF is enabled on the backend, you may not be able to view the home page statistics properly.

  • 3 devlogs
  • 10h
  • 5.70x multiplier
  • 59 Stardust
Try project → See source code →
Open comments for this post

6h 16m 30s logged

Recently, on the backend, I added support for customizing the “from-address” for the SMTP service, rather than using the SMTP username directly as the sender’s email address as before.

Additionally, to make the project more robust, I added support for S3 storage on the backend to store the generated answer sheets and score sheets, replacing the original local file system cache. Administrators can freely choose between the two options via environment variables.

On the frontend, I first synchronized the changes related to the backend’s S3 storage support, then updated the loading animation to feature a logo that gradually changes in size as the central element, accompanied by a circular animation, replacing the previous simple Lucide React icon.

Next, I will implement management features for S3 storage and synchronize the changes across both the front end and backend.

0
0
1
Open comments for this post

2h 5m 30s logged

This update fixes how the backend handles school_id in multi-school exam scenarios. Previously, some score and answersheet APIs accepted school_id from the client and used it during score lookup or teacher account selection. In multi-school exams, that could allow a SCHOOL-level user to query data outside their own school if the request parameters were crafted manually.

The score and answer sheet APIs now resolve the effective student and school context on the server first. SELF users are always limited to their own bound student account, and any client-provided student_id, student_name, or school_id is ignored. SCHOOL users are always limited to their own school, even if another school_id is provided. GLOBAL users can still use school_id as an optional filter.

Student name based lookup no longer requires school_id. The backend searches within the current user’s accessible scope. If multiple students match the same name, the error message now includes both school and class information for disambiguation.

Score sheet export was also tightened. SCHOOL users always export their own school’s data, and any provided school_id is ignored. GLOBAL users can still export all schools or a specific school.

Since this is just a backend fix related to permissions, I can only provide screenshots of the code I modified.

0
0
1
Open comments for this post

1h 59m 18s logged

In this update, I added a feature to the front end that remembers the user’s selection in this dropdown menu.

In addition, I added a button to the exam details page so that users with the appropriate permissions can view more data about the exam directly in the “Data View” tab without having to copy and paste the exam_id.

I fixed two race conditions caused by data desynchronization on the back end and manually cleaned up two rows of corrupted data from the prod database.

0
0
1

Followers

Loading…