← Back to portfolio

Team project · Residential community management

VecinUs

An application for residential communities, bringing incidents, facility bookings, votes, communication and documents together.

Period
Feb–May 2026
Team
15 people
Context
Team-based academic project simulating the creation and launch of a technology startup.
My role
Deployment lead · DevOps and full-stack development

My contribution

I handled all deployments and developed much of the team’s GitHub Actions workflows and hooks. I also worked on community administration, incidents, permissions and testing, including an AI-based regression testing system that uses an LLM-as-a-judge approach.

  • GitHub Actions
  • Render
  • TypeScript
  • React Native
  • Expo
  • Python
  • FastAPI
  • Supabase
  • PostgreSQL
VecinUs logo
VecinUs: management and communication for residential communities.
  • 15-person team
  • Deployments and CI/CD
  • Automated AI assistant evaluation

Deploying and maintaining a 15-person project

My main responsibility was DevOps: preparing and maintaining frontend and backend deployments, and automating the checks used across the team. I developed much of the continuous integration workflows and local hooks.

I configured Render blueprints for the different sprints and deliveries. The deployment workflow resolves the environment from the release branch, runs reusable lint and test workflows and, once they pass, triggers both deployments through hooks protected by GitHub Environments.

  • CI/CD: integrating lint and Pytest, reusing workflows and removing redundant checks.
  • Local hooks: Python formatting and lint, ESLint, TypeScript type checks and commit conventions.
  • Supabase: scheduled queries to keep each environment’s projects active, with separate configuration and schemas.

Checking the AI assistant’s response quality

Together with a colleague, I developed an AI-based regression testing system using LLM-as-a-judge methodology, which employs a golden set of questions to evaluate the RAG assistant. This workflow runs daily or on demand, using a set of questions with context and expected answers to detect quality changes in the assistant that queries community documents.

The test mocks document retrieval and embeddings but calls the real Gemini model. A second model scores responses from 1 to 5; the check fails if the average falls below 4. A JSON report is stored as a GitHub Actions artifact so each answer can be reviewed.

This is a regression signal, not a guarantee that every answer is correct. I also worked on isolated AI feature tests with mocked external calls so they do not require credentials.

Community administration

I also worked on the community administration screen: residents, properties, invitations and refreshing information when switching communities.

The complete application includes bookings, votes, chat, documents and AI features alongside everyday management. It is a team product; the screenshots on this page show specific areas I contributed to.

Community administration showing residents, invitations and property management
Managing an existing community: residents, invitations and properties. Captured from the team demo using test data.

Incidents, validation and permissions

  • Development and refinements of the incident interface, including forms, states and user messages.
  • Property updates and synchronisation when switching communities.
  • Validation of images, dates, voting options and other business rules.
  • Role-based permission changes for document access and AI functionality.
Incident list with status filters and a pending incident
Tracking incidents by status. I worked on this interface and its synchronisation when switching communities.

See the project in action

5:55
Full demo recorded by a teammate, using test data. It includes features developed by other team members.
What the video shows

The demo covers community setup, subscriptions using test data, invitations, chat, bookings, incidents, meeting minutes and voting. It is an overview of the shared product; my own contribution is described separately on this page.

Source code, documentation and landing page available.