02 / Course-based project · Full-stack application

Activities bring people together. The backend connects the experience.

An activity-based social application with attendance workflows, profiles, following, and live discussion, built with ASP.NET Core and React.

My role
Full-stack implementation
Timeline
Aug 2025 — Sep 2025
Context
Course-based learning project
ActifyActivitiesDiscover · Create · JoinPeopleProfiles · Follow · AttendLive discussion

Feature relationship illustration based on the repository; this is not a product screenshot.ENGINEERING CASE STUDY

The project

Actify is an activity-based social application: users can discover and create activities, manage attendance, follow people, maintain profiles, and join live discussions.

I built it as a course-based full-stack project while studying the Complete Guide to Building an App with .NET Core and React. It gave me a focused setting to connect backend use cases to a real React interface.

What I implemented

  • Implemented REST API features using ASP.NET Core, EF Core, CQRS, and MediatR.
  • Worked with Identity-based account flows, activity creation and editing, attendance changes, user profiles, photo management, and follow relationships.
  • Integrated a React and TypeScript frontend using MUI, MobX, API hooks, forms, and protected routes.
  • Connected SignalR comments to the activity detail view, including loading previous comments and receiving new ones.

Engineering decisions

01

Model attendance according to who is acting.

The attendance use case distinguishes the host from other attendees. A host can toggle cancellation; an attendee can leave; a new participant can join. One workflow represents three different user intentions.

Explore the implementation
02

Make discussion activity-specific.

The comment hub joins each connection to its activity group, loads existing comments for the caller, and broadcasts new comments to that activity. The React hook manages the client connection and updates observable comment state.

Explore the implementation
03

Keep feature responsibilities visible end to end.

Application commands and queries express the backend use cases. React feature folders and dedicated hooks connect activities, accounts, and profiles to those endpoints, while shared components provide common form and navigation behavior.

Explore the implementation

A closer look at the code

This excerpt shows how the hub routes a new discussion comment through the application layer, then broadcasts the returned comment to its activity group.

API / SignalR / CommentHub.cs · source excerpt, reformatted
var comment = await mediator.Send(
    new AddComment.Command {
        CreateCommentDto = createCommentDto
    });

await Clients.Group(createCommentDto.ActivityId)
    .SendAsync("ReceiveComment", comment.Value);
Read the full comment hub

What I took forward

Actify helped me connect backend concerns to the user experience: an attendance update changes what a participant sees, and a live comment has a connection lifecycle as well as a persistence path.

It was a learning project. The next iteration would focus on integration tests around attendance changes and on verifying discussion access at the activity boundary.

Explore the work

The next good thing starts here

Let’s build
something that matters.

I’m open to junior .NET backend and software engineering opportunities. Have a role or a problem in mind? I’d love to hear about it.

Start a conversation
GitHubLinkedInCodeforcesBASED IN PALESTINE · OPEN TO REMOTE WORK