Skip to content
Mauricio Pereira BragaFull stack developer
All work

Clips

A web app where research fellows log their hours, fill the month automatically from their weekly schedule and default activities, and download the monthly report as a PDF.

Role
Concept and development
Period
2025 – 2026
Type
Web application
Clips month calendar with hours logged on every working day and the 84-hour total met

The problem

Every month a fellow has to hand in a report with the hours worked, day by day, until the scholarship workload is met. Building it by hand in a spreadsheet takes time, and it is easy to get working days, holidays and the monthly target wrong.

Requirements

Functional

  • Register the fellowship details, the weekly schedule with a validity period, default activities with a priority and personal holidays.
  • Log each day's activities with start and end times.
  • Fill the month from the weekly schedule and the default activities, mornings first and then afternoons.
  • Generate the monthly PDF report.
  • Invite people by email, with a set-password link valid for 7 days, and block or unblock access.

Business rules

  • The daily target is the weekly workload divided by 5, and the monthly target is the daily target times the working days.
  • Working days run Monday to Friday, except national holidays and the ones the fellow adds.
  • Automatic filling never changes or overlaps a manual entry.
  • Priority sets how often each default activity is used (high 3, medium 2, low 1).
  • The report lists working days only, and hours on weekends and holidays are left out of the total.
  • There is no open sign-up.

My contribution

The first version, from December 2025, was built in Next.js with Prisma and already handled a fellow's month, but it had no invitations or user administration. In 2026 I rewrote the application in Laravel with Inertia and Vue and covered its rules with 68 Pest tests and 15 Vitest tests. The fill-month action places the weekly schedule on the days it applies and tops up every working day to the target with the default activities, rotating by priority, without ever changing a manual entry. The target accounts for national holidays and the ones the fellow adds, and the PDF report lists working days only. Access is invite-only with user administration, and deployment runs through Laravel Forge once the tests pass in CI.

Project highlights

  • 1 clickto fill the month
  • PDFmonthly report ready to hand in
  • Invite-onlyaccess managed by administrators

Technologies

Laravel 13, Inertia 3, Vue 3, TypeScript, PrimeVue 5, Tailwind CSS v4, PostgreSQL, Pest

Data model

Each fellow owns their entries, weekly schedule, default activities and holidays, and the invitation stays apart from the account until the password is set.
Each fellow owns their entries, weekly schedule, default activities and holidays, and the invitation stays apart from the account until the password is set.

Inside the product

Default activities fill working days in rotation. High priority comes up three times, medium twice and low once.
Default activities fill working days in rotation. High priority comes up three times, medium twice and low once.