MyEffect

A volunteering web and mobile platform tracking metrics for the Sustainable Development Goals. Finding you opportunities to grow your Impact Resume.

MyEffect is a volunteering platform for organizations and individuals. Volunteers track their contributions against the UN Sustainable Development Goals, and organizations track impact across the whole company. I was a full-stack developer across the mobile app, the web app, and the GraphQL backend.

SDG Goals

Backend

GraphQL resolvers for shifts, check-ins, and scheduling, with subscriptions driving push to web and mobile.
  • Resolvers for checking in and out, requesting or scheduling a shift, and editing profiles
  • Subscription resolvers feeding a push notification service for both clients
  • JWT access and refresh tokens for authentication and server-side authorization
  • Relational data models: requirements, normalization, security review, and production migration plans

Notifications for check-ins and hour contributions are modelled like this:

type NotificationStatus {
  id: ID! @id
  sender_user_notification: UserNotification!
  receiver_group_notification: GroupNotification!
  message: String
  is_checked: Boolean! @default(value: false)
  is_answered: Boolean! @default(value: false)
  is_accepted: Boolean! @default(value: false)
}

// Check-in and check-out times of a shift; one level of validation for hours.
type Report {
  id: ID! @id
  reported_in_by: ID
  reported_out_by: ID
  check_in: DateTime
  check_out: DateTime
}

Mobile and web

React Native and React clients sharing Apollo state, tested with Jest, and moved to TypeScript.
  • Standardized state on Apollo GraphQL and reactive variables
  • Check-in and check-out navigation on both clients, memoized where it measurably helped
  • Unit tests for shift selection, check-in and check-out, and shift requests
  • Web: landing page, onboarding, group and action creation, position and shift scheduler, and profile pages
  • Rewrote components for accessibility: language selection and font sizing
  • Converted the web app to TypeScript, starting from component props and state

Design

Built the design system with our designer in Material UI and took it into the web client.
  • Mentored and collaborated with the designer on the component library
  • User personas, journey mapping, wireframing, and prototyping
  • Reviewed and streamlined the design principles, then implemented the foundational components

Strategy and growth

I wrote the development plan: where the product should go and what to build first.
  • Goals tied to the organization's mission, giving development a direction
  • A SWOT analysis of the development effort and the team's capabilities
  • Feedback loops with mentors and peers, and regular adjustments to the plan
  • Deliberate skill development aimed at the goals

Tech stack

Clients

  • Expo
  • React Native
  • React
  • TypeScript
  • Material UI

Backend

  • GraphQL
  • Apollo
  • Prisma
  • PostgreSQL
  • Node
  • Express

Tooling

  • Jest
  • Docker
  • Figma