Skip to content

Lemma.

Built on logic.

Proof.Software designed, built and tested by Abdeljalil Sennaoui. Each of the four projects below states a problem, gives a construction, and shows the evidence that it holds.End of proof

Explore projectsView GitHub

Note: In mathematics, a lemma is a proven result used as a step toward a larger theorem.

Projects and the disciplines they exercised
Test automationBack end and APIsSoftware architectureCI/CDDataFront endAndroid
L1Insurance QAyesyesyesyesyesnono
L2CampusGuideyesnonoyesnoyesyes
L3SUMMSyesyesyesyesyesyesno
L4Study Assistantyesyesyesyesyesnono
Projects against the disciplines they exercised. A filled square means the project did the work; the same relation can be read as a graph.

1 Selected work

Four projects, each with a case study. Team projects say what the team built and, separately, what I built.

Lemma 1 (Insurance Billing QA Framework).

End-to-end test automation for a simulated insurance billing platform: a Spring Boot application, and the seven levels of testing that hold it to its rules.

Context
Solo project, September 2026
Technologies
Java 25, Spring Boot 3.5, Selenium 4, REST Assured, Cucumber 7, TestNG, Cypress 15, JMeter, GitHub Actions

Read the case study: Insurance Billing QA FrameworkRepository on GitHub: Insurance Billing QA Framework (opens in a new tab)

The invoice console of the billing application: a table of nine invoices with customer, policy, total, outstanding balance and a status of unpaid, cancelled, overdue, partially paid or paid.
Figure 1. The application under test. This screenshot is generated by the UI test suite itself, through the same page objects the tests use.

Lemma 2 (CampusGuide).

An Android app for finding your way around Concordia’s two campuses: outdoor and indoor directions, the shuttle, and a route to your next class.

Context
Team of 11, university course project, January – April 2026
Technologies
Kotlin, Jetpack Compose, Google Maps SDK, Routes API, Robolectric, Espresso, GitHub Actions, SonarQube Cloud

Read the case study: CampusGuideRepository on GitHub: CampusGuide (opens in a new tab)

  1. Screens

    • Map
    • Indoor map
    • Calendar
    • Points of interest
    • Accessibility
  2. State

    • ViewModels
  3. Domain and data

    • Directions repositories
    • Indoor pathfinding
    • ShuttleTracker
    • GeoJSON parser
    • CalendarRepository
  4. External services

    • Google Maps SDK
    • Google Routes API
    • Concordia Open Data API
Figure 2. Layers of the app, drawn from the source tree. This is a diagram, not a screenshot.

Lemma 3 (SUMMS — Smart Urban Mobility Management System).

A web platform that puts bike-sharing, car-sharing, scooters, parking and transit information behind one booking flow, with every request passing through the same strict MVC chain.

Context
Team of 6, university course project, February – April 2026
Technologies
React, Node.js, Express, Firestore, Firebase Auth, Jest, Supertest, GitHub Actions

Read the case study: SUMMS — Smart Urban Mobility Management SystemRepository on GitHub: SUMMS — Smart Urban Mobility Management System (opens in a new tab)

  1. View

    • React
  2. Controller

    • MobilityController
    • MobilityRequestHandler
    • Commands
  3. Model

    • MobilityService
    • BookingStateMachine
    • Pricing
    • EventBus
  4. Data and gateways

    • MobilityDataGateway
    • Gateways
Figure 3. The path of one request through the back end, from the repository’s architecture documents.

Lemma 4 (Local AI Study Assistant).

A study tool that turns lecture PDFs into summaries, flashcards, quizzes and sourced answers, using a language model that runs entirely on the student’s own machine.

Context
Solo project, August 2026
Technologies
Python, Streamlit, Ollama, scikit-learn, pypdf, pytest, GitHub Actions

Read the case study: Local AI Study AssistantRepository on GitHub: Local AI Study Assistant (opens in a new tab)

The study assistant in a browser. A sidebar shows “Connected to Ollama”, the selected model and retrieval settings. The main panel has one lecture PDF loaded, a notice that about 13,277 characters of text were extracted, four study modes with Summary selected, and the start of a generated summary.
Figure 4. A lecture PDF loaded and summarised on the device. The interface says how much text was extracted and warns when a long document is truncated.

2 About

Definition (LEMMA by AJS). An independent software engineering studio of one: the name under which Abdeljalil Sennaoui publishes the software he designs, builds and tests.

I’m Abdeljalil Sennaoui, a Software Engineering student at Concordia University in Montreal. I like the parts of software that have right answers: rules that must hold, tests that prove they do, and systems that keep working when something around them fails.

My interests are back-end and full-stack development, software testing and QA automation, and software architecture. Most of what I build ends up with a pipeline around it, because I trust a result more once a machine has checked it.

The name comes from discrete mathematics. A lemma is a result you prove on the way to something larger, and that is how I think about each project.

Remark. LEMMA is a personal identity, not a company. There are no employees and no clients, and every project here is one I worked on myself. Where a project was built by a team, its case study says so and separates my part from the rest.

Abdeljalil Sennaoui
NameAbdeljalil Sennaoui
StudiesSoftware Engineering, Concordia University
Based inMontreal, Quebec, Canada
Links

3 Engineering

How I work, and what I have worked with. Each skill links to a place where you can see it in use.

Principles

  • Correctness. Decide what “right” means before writing the code, then make the wrong states hard to reach. A rule that lives where the data lives cannot be bypassed.
  • Testability. If something is hard to test, the design is telling me something. I would rather pass a dependency in than patch around it.
  • Clear architecture. Each part should have one job and a boundary you can point to. A pattern earns its place by removing a real problem.
  • Maintainability. Code is read far more often than it is written. I write down why a decision was made, including what it cost.
  • Honest measurement. A figure is either measured or it is labelled as not measured. A green run only means something if it tested what was actually built.
  • Continuous improvement. The first version of a solution is often wrong in an instructive way. I keep the wrong versions in the record, with the reason they failed.

Skills

AreaSkills and evidence
Languages
Frameworks
Testing and QA
Back end and APIs
Databases
DevOps and CI/CD
Tools and practices

Table 1. Skills, and where each can be seen in use. L1 to L4 cite the lemmas above.

4 Contact

I’m interested in software engineering internships, co-op placements and junior roles, and I’m glad to talk about any project on this site.