Skip to main content
The student management page at /app/tutor/hijos is where you create, edit, and monitor the students linked to your tutor account.

Student list

The page shows all students whose tutor field matches your tutor ID, ordered alphabetically by first name. Each row shows:
  • Student avatar (photo or initials fallback)
  • Full name and calculated age
  • Email address
  • A warning icon if containment situations exist
  • Edit and delete action buttons

Adding a student

1

Open the form

Click Nuevo hijo in the page header, or navigate to /app/tutor/hijos?kid=new. A right-side drawer opens with the registration form.
2

Fill in the student details

FieldRequiredValidation
First nameYes3–50 characters
Last nameYes3–50 characters
EmailYesValid email format; must be unique across the platform
Date of birthYesStudent must be at least 8 years old
SexNomale, female, or other
PhoneNoExactly 10 digits (Mexican format); must be unique if provided
PasswordYes (on create)Must match confirmation field
PhotoNoUploaded to Supabase storage under the users bucket
3

Create the account

Submit the form. The client sends:
POST /api/tutor/create-update-users
Content-Type: multipart/form-data

name=Ana
last_name=García
email=ana.garcia@example.com
dob=2014-06-15
sex=female
phone=5512345678
new_password=••••••••
confirm_password=••••••••
photo_file=<file>
On success, the server:
  1. Validates all fields with Zod schemas
  2. Checks for duplicate email or phone across the users table
  3. Hashes the password with bcrypt
  4. Inserts the new user row with tutor set to your ID
  5. Sends a welcome email with an email-confirmation link to the student
The welcome email contains a confirmation link of the form {URL_GENERAL}confirmar?t={token}&r=onmula. The student must click it to activate their account.

Editing a student

Click the edit icon on any student row. The same form drawer opens pre-populated with the current values. The id field is included in the submission, which triggers an update rather than an insert:
POST /api/tutor/create-update-users
Content-Type: multipart/form-data

id=<student_id>
name=Ana
last_name=García
...
Password is not required on update — only provide new_password and confirm_password if you want to change it. Photo replacement uploads a new file and removes all previous photos for that student from storage.

Deleting a student

Deleting a student is irreversible. Their account, class enrollments, and activity history are permanently removed.
Click the trash icon on a student row. A confirmation dialog appears. If you confirm:
POST /api/tutor/delete-user
Content-Type: multipart/form-data

record=<student_id>
name=Ana García
The server performs a soft delete (deleted = true) on the users table row.

Viewing progress per student

Progress data appears on the tutor dashboard (/app/tutor) rather than on a separate detail page. To view a specific student’s metrics:
1

Go to the dashboard

Navigate to /app/tutor.
2

Select the student

Click the student’s avatar in the row of avatar buttons. The charts below update immediately.
3

Review the charts

Two panels update to show the selected student’s data:
  • Study hours (last 30 days) — a line chart showing daily session minutes. Each point on the x-axis is a calendar day; the y-axis shows minutes.
  • Completed activities — a bar chart per class showing delivered_count versus assigned_count.
You can also navigate directly to the hijos page for a specific student by appending their ID: /app/tutor/hijos?kid={student_id}. This pre-selects the student in the edit form.

Containment situations

If the Montero AI flags an emotionally sensitive conversation for a student, a containment_situations record is created. The tutor sees:
  • A warning icon (amber triangle) on the student’s row in /app/tutor/hijos
  • A side panel that opens on click, listing all situations for that student
Each situation card shows:
FieldDescription
Levelleve (mild, orange border) or grave (serious, red border)
SummaryShort description of the flagged content
Date/timeWhen the situation was detected
Last messageThe final message from the triggering conversation
A grave situation requires immediate attention. Contact the student and, if necessary, involve the school’s counselling team.

How student data stays in sync

The tutor dashboard view (tutor_dashboard) is a Supabase database view that aggregates live data. It is re-fetched each time you load the dashboard page — there is no manual refresh step. Class enrollments, submitted activities, and session records are all read at the time of page load.

API reference

EndpointMethodPurpose
/api/tutor/create-update-usersPOSTCreate or update a student account
/api/tutor/delete-userPOSTSoft-delete a student account