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
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.
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.
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.
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);
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.