Skip to content

An Subscription Management Platform for Business owners to promote their subscriptions and for Users to access the vast market of subscriptions.

Notifications You must be signed in to change notification settings

ushiradineth/subapp

Repository files navigation

💵 SubM: Subscription Management Platform

A Subscription Management Platform for Subscription Sellers to promote and sell their subscriptions and for Users to access the vast market of subscriptions. NextJS dashboard for Vendors and React Native Mobile App for Subscription Users

📦 Technologies

  • Next.js
  • TypeScript
  • NextAuth
  • PostgreSQL
  • Prisma
  • tRPC
  • Tailwind CSS
  • Expo
  • React native
  • Zod
  • React-hook-form
  • Shadcn UI
  • Turborepo
  • Tamagui
  • React Email
  • Vercel
  • Supabase
  • AWS S3

📚 Features

Here's what you can do with SubM:

  • Manage Subcriptions: Users can track and manage their subscriptions using the React Native mobile app. Create custom private subscriptions if the subscriptions doesn't exist.

  • Community Features: Users can interact with the community to discuss about the subscriptions in the market.

  • Personalized Recommendations: Users get personalized recommendations for subscriptions, backed by algorithms like Content Based Filtering and Collaborative Filtering.

  • Sell Subscriptions: Vendors can sell subscriptions on SubM, and track analytics using the dashboard.

  • Manage the platform: Admins can manage all entities of SubM using the NextJS dashboard, including users, vendors, products and product requests etc.

👩🏽‍🍳 The Process

I started this project as the final year project for my Bachelors Degree, I did my initial research to find a market with a lack of automation of tasks and found the subscription market to be the right pick for this project, as there are no other apps that provides these features together.

Next, I planned out what features I should have for this product, and landed with building a platform that includeds an admin and vendor dashboard, and a mobile app, with features such as cohesive entity management, personalized recommendations and community features.

I then researched about the technologies i should use for this platform, and landed on building an end to end typesafe application using typescript on all three ends, backend, NextJS frontend and React Native mobile app, collocated with Turborepo.

I was able to conclude development within three months while working and studying at for the final year.

I was able to use this project as my internship assignment project, which helped me get permanent from my internship.

Along the way, while building everything i documented the process as it was necessary for my final year report.

In the end I was able to use this project to get a job and get an A for the final year project :]

📚 What I Learned

During this project, I learned about running a structured and well documented project.

Turborepo:

  • This is my first time building a project with a monorepo like Turborepo.
  • It came with a bunch of issues with pnpm but i was able to get through them.

React Native:

  • This is also my first time using Expo React Native.
  • I was using an early version of Expo Router as that was the latest back then, which came with a few quirks, but i was able to get through then.

💭 How can it be improved?

  • Add automated product scraping.
  • Add localization with more currencies.
  • Improve performance on the mobile app.
  • Update Expo router to the latest version, which should fix some of the quirks.
  • Add dark mode for the mobile app.
  • Add light mode for the dashboard.

🚦 Running the Project

To run the project in your local environment, follow these steps:

  1. Clone the repository to your local machine.
  2. Run pnpm i in the project directory to install the required dependencies.
  3. Run pnpm dev to get all projects running, but you are required to provide the necessary enviorment variables.

Running the project maybe complex due to the nature of turborepo, contact me for any clarification.