Skip to main content
R.

Rima Nafougui

I build things the way I approach everything else: with full commitment and a need to understand how it works. Software developer, Director of Technology at Careforall.org, and someone who has yet to find a problem worth walking away from.

View Projects
15+Students Tutored
10+Projects Built
4Languages Spoken

About Me

Rima Nafougui

Rima Nafougui

Builder. Optimist. Polyglot.

Experience

March 2026 – Present

Director of Technology

Careforall.org

Managing website infrastructure maintenance, security, and email delivery systems for a non-profit platform. Leading SEO optimization, performance improvements, and compliance efforts to ensure a reliable and accessible experience for users.

May 2025 – Present

Programming Tutor

Cégep Ahuntsic / Freelance

Mentoring 15+ students weekly in SQL, Java, Python, JavaScript, Kotlin, and Swift. Improved student pass rates by 85% through real-time debugging, algorithm problem-solving, and personalized learning materials including interactive dashboards and visualization tools.

Professional Reference Available
Aug 2024 – May 2025

Mathematics Tutor

Cégep Ahuntsic

Tutored 5 CS students in linear algebra and discrete mathematics, creating 10+ Python visualization scripts to bridge theory to real-world programming. Topics included ray tracing calculations, graph theory, and probability for ML applications.

Professional Reference Available

Projects

6 selected works

RCapsule — Smart Closet Manager screenshot

RCapsule — Smart Closet Manager

Next.jsTypeScriptPostgreSQLSupabase+3

Problem

My first production-level application, built around something I genuinely care about: fashion as a design problem. Managing a wardrobe across dozens of e-commerce tabs with no inventory visibility leads to repeat purchases and underused clothing.

  • AWS Lambda + ECR pipeline processing 176MB ONNX models for real-time BG removal
  • Chrome Extension with DOM scraping reducing manual data entry by 90%

Key Decisions

Used AWS Lambda with a containerized ONNX model for background removal rather than a third-party API to avoid per-image fees at scale and control the model version.

Built a Chrome Extension for auto-import rather than requiring manual uploads — reducing input friction was the most important retention factor surfaced in early user testing.

Chose NextAuth.js with Supabase over custom auth to shrink the security surface area and ship the core product logic faster.

Source Code
Supply Chain Analytics Dashboard screenshot

Supply Chain Analytics Dashboard

Power BIPythonDAX

Problem

Shipping disruptions are invisible in standard reports because data aggregation hides the selection bias that distorts cost and delay estimates.

  • Star schema data model with 50+ DAX measures for prescriptive analytics
  • 4-page interactive dashboard with drill-through on $17M+ shipping costs

Key Decisions

Chose a star schema over a flat model to support complex DAX relationships without query fan-traps across 50+ measures.

Surfaced the selection bias explicitly in the report rather than silently correcting it — decision-makers need to see the distortion to trust the analysis.

Used what-if parameters for prescriptive analytics instead of stopping at descriptive — the goal was to support decisions, not just describe past data.

Source Code
ArXiv RAG Research Assistant screenshot

ArXiv RAG Research Assistant

PythonSupabase (pgvector)Google Gemini APIGitHub Actions+1

Problem

Reading full papers to find relevant insights is hours of manual work that a well-designed retrieval system can reduce to seconds.

  • Automated ETL pipeline via GitHub Actions with weekly scheduled scraping
  • 384-dim vector embeddings + Supabase pgvector for semantic search

Key Decisions

Used pgvector on Supabase rather than a standalone vector DB — it kept the stack at one host and avoided the operational overhead of a separate service for what was essentially an index.

Chose 384-dim sentence-transformers over larger models because the speed-quality tradeoff is optimal for academic abstracts, and latency matters more than marginal embedding precision.

Scheduled weekly GitHub Actions scraping instead of real-time ingestion — ArXiv relevance doesn't decay in hours, so weekly freshness avoids rate-limit complexity for no practical gain.

Source Code
localhost:8080
GET/v1/api/expenses200
POST/v1/api/expenses201
GET/v1/api/expenses/summary200
DELETE/v1/api/expenses/:id204
POST/v1/api/auth/login200
$mvn spring-boot:run

ExpenseFlow — Finance REST API

API
Spring Boot 3Java 21PostgreSQLJWT+2

Problem

Finance APIs commonly become untestable as role and rule complexity grows, causing production bugs that are expensive to trace back to a specific layer.

  • JWT authentication with role-based authorization and pagination
  • 50% test coverage using JUnit 5, Mockito, MockMvc

Key Decisions

Used JWT over session-based auth to keep the API stateless and horizontally scalable — no shared session store means simpler deployment without sticky sessions.

Enforced a JaCoCo 50% coverage floor in CI rather than treating coverage as aspirational — a build gate creates accountability that a goal does not.

Applied strict domain layering (controller / service / repository) from the start so adding new expense categories never requires cross-layer rewrites.

Source Code
Accessible Component Library screenshot

Accessible Component Library

ReactTypeScriptWCAG 2.1ARIA+1

Problem

Most component libraries achieve visual polish while treating keyboard navigation and screen reader support as an afterthought, forcing teams to retrofit compliance after shipping.

  • Focus trap management and Tab cycling across 3 accessible components
  • 15+ TypeScript component variants with strict typing

Key Decisions

Implemented focus trap management from scratch rather than using a library so I could fully understand and document the exact behavior required per component type.

Used CSS Modules over utility classes to keep styles co-located with component logic and avoid purge-related class stripping in consumer build systems.

Validated with VoiceOver and NVDA alongside axe-core — automated tools catch roughly 40% of WCAG failures, so manual testing is non-negotiable for a real accessibility guarantee.

Source Code
To Do App — Android Task Manager screenshot

To Do App — Android Task Manager

KotlinJetpack ComposeHiltRoom+4

Problem

Most Android task apps manage search, filters, and persistence as separate states, causing UI flicker and stale reads whenever any one of them changes.

  • Sealed TaskUiState (Loading | Success | Error) powered by a combine() pipeline merging 5 flows — Room data, text search, priority filter, completed-task toggle, and DataStore sort order — into one WhileSubscribed(5000) StateFlow
  • WorkManager OneTimeWorkRequest reminders per task triggered 1h before deadline, auto-rescheduled on edit and cancelled on delete via a custom HiltWorkerFactory

Key Decisions

Combined five independent flows (Room data, search, priority filter, completed toggle, DataStore sort) into one StateFlow using combine() so the UI always derives from a single consistent snapshot.

Used Hilt over manual DI because its compile-time verification catches missing bindings before runtime — critical for a WorkManager component that must survive process death.

Chose WorkManager over AlarmManager for reminders because it handles Doze mode, device reboots, and cancellation automatically — AlarmManager requires custom broadcast receivers for each of those edge cases.

Source Code

Skills

Languages

13
JavaScript
TypeScript
Swift
Kotlin
Java
CSS
HTML
SQL
NoSQL
Python
C#
C++
PHP

Frameworks

8
Node.js
Next.js
Vue.js
Vuetify
ASP.NET
Express.js
React.js
Tailwind CSS

Databases

4
PostgreSQL
MySQL
MongoDB
Supabase

Version Control

2
GitHub
Git

IDEs & Tools

9
Visual Studio Code
Visual Studio
Unity
HeidiSQL
PhpStorm
Eclipse
Android Studio
Xcode
IntelliJ IDEA

Cloud & DevOps

4
AWS
Vercel
Docker
GitHub Actions

Technical Journey

  1. MAY 2026

    DEC in Web & Applications

    Collège Ahuntsic

    Graduating from intensive training in full-stack web development, mobile applications, and systems analysis. Strong foundations in OOP, algorithms, database management, and cloud computing.

  2. MARCH 2026 – PRESENT

    Director of Technology

    Careforall.org

    Managing website infrastructure maintenance, security, and email delivery systems. Driving SEO optimization, performance improvements, and compliance for the non-profit platform.

  3. FALL 2026

    BSc in Computer Science

    Concordia University

    Incoming CS student. Deepening theoretical foundations in software architecture and large-scale systems while continuing to ship production projects.

  4. 2027+

    Build Something of My Own

    To Be Written

    Working toward founding a company or research initiative that solves a real problem for real people. The next chapter is still being decided — but the direction is clear.

Contact Me