Skip to content
Alper Soy

All work

Edvisorly

Transfer planning platform for community college students

Built at
Crea Inc.
Period
2022 - 2024
Role
Backend engineer
Links
Product site (opens in a new tab)

What it is

Edvisorly helps community college students plan a transfer to a four-year university. They set up a profile, follow universities and peers, build a course plan that tracks units, GPA and general education requirements, apply to partner universities through forms in the app and chat with them.

The backend is a NestJS service on MongoDB built by the Crea Inc. team. I worked on it as a backend engineer during the Crea engagement.

System overview

  • Controller, service and repository layers over Mongoose schemas; aggregation pipelines for reporting and pagination.
  • Three entry points from one codebase: the HTTP API, a background worker with queue processors and scheduled jobs, and a CLI for backfills, reports and data ingestion.
  • Redis for caching with tag-based invalidation, for queues and for distributed locks around application form updates.
  • Auth0 for identity; uploads validated, resized and stored in S3.
  • Versioned REST API documented with OpenAPI; structured logs with request ids.
  • Application forms modeled as sections, question groups and typed questions, with a form definition per partner university.

Engineering

University integration pipelines

Scheduled jobs enqueue deduplicated work that pushes inquiries, prospects and applications to university systems over HTTP and file transfer, with retries and backoff.

Course transferability

A CLI command imports course articulation data from a public source, so the course plan can validate which courses transfer to which universities.

Automated outreach

Worker schedules send welcome, follow and application messages from universities to students through the chat service, with waits between messages and checks for replies.

Defensive API layer

Global validation with whitelisting, request sanitization, a uniform response envelope and validated response DTOs.

Reliable notifications

Calls to the notification service run as queued jobs with retries and exponential backoff.

Testing and delivery

  • Unit and end-to-end tests on an in-memory MongoDB seeded from cached dumps, with mocked external services and locally signed tokens; a global coverage threshold.
  • GitHub Actions runs the suite on pull requests, lints every PR and enforces branch naming.
  • Deployed to Heroku from GitHub Actions as web and worker processes built from Dockerfiles, behind a CDN.

Stack

Edvisorly stack: NestJS, TypeScript, MongoDB, Mongoose, Redis, Bull, Auth0, AWS S3, Docker, Heroku

My part

  • Backend engineer on the Crea Inc. team.
  • Worked on NestJS modules, MongoDB schemas and query optimization, Redis caching, REST endpoints and AWS integrations.