| Introduction | Features | Screenshots | Why This App? | Technologies Used | |
| Setup Instructions | How to Use the App | Deployment & Production Notes | Future Improvements | Feedback | Contact |
UnU is a full stack application that enables the user to unsubscribe or unfollow from multiple social media or video streaming accounts. Users log in and link accounts from multiple social media or streaming services. Once the accounts are linked, users can select one or more accounts they subscribe or follow and then click unsubscribe/unfollow.
- Uses the YouTube Data v3 API so you can easily unsubscribe from more than one user in bulk.
- Multiple account handling through account linkage for more than one YouTube channel.
Landing page showcasing the application title, instructions, description, and future services.
Login page for creating your primary account with UnU.
Shows your account's subscription list after linking your account.
This web application solves a real world problem when users are subscribed to or are following hundreds of accounts. Services like YouTube, Instagram, or Twitch don't offer an easy and fast solution to unsubscribe/unfollow from these accounts in bulk. This web application makes it easy by retrieving each subscription/follow and simply clicking one more button to unsubscribe/unfollow.
-
Frontend:
- Next.js
- TailwindCSS
- HeroUI
- Javascript
-
Backend:
- Express.js
- Sequelize
-
Database:
- PostgreSQL
-
APIs:
- YouTube Data v3
Next.js was chosen because it uses the React framework. Next.js had just enough of what I needed if I wanted something easy to use and to learn. I did consider Vite and Svelte, but those didn't have the page routing that Next.js had.
TailwindCSS and HeroUI were chosen because they make it easier to make a website look more appealing even if you don't have a great handle on CSS. I'm planning on using MaterialUI in the next version of this project because it has components that align with the vision that I have for UnU.
Express.js was chosen because there are a wide range of libraries, references, and documentation for API usage and and web development in Javascript. It was also chosen because it's very straightforward and I already knew the basics. I went with technologies that I already knew because I knew that I'd be learning so many new things in this project. Adding more new technologies was something that was going to slow me down.
Sequelize was used because it didn't include any bloat. I did consider Prisma against Sequelize, but the type safety, definitions, and model definitions felt like it was overkill for a project of this size. At the end I only had three tables to work with.
PostgreSQL was chosen because it's a relational database that is the most used and it also didn't have too much unnesecary bloat. I considered MySQL but the documentation and size of the database felt very enterprise-centered. It didn't suit the scale that this app needed.
YouTube Data v3 was used to request the user's subscription list, request the channel's subscriber count, and to unsubscribe from YouTube channels.
- Load the database in PostgreSQL with the
unu-schema.sqlfile. - Make sure the user role you are using has the proper privileges.
- If necessary, change the user role name as declared in the
init_seqeulize()function inbackend/lib/db_seq_lib/seq_lib.js - Make sure the database is running.
- Navigate to the
backend/directory. - Install the required packages:
npm install- Run the Express.js backend:
node main.js- The backend is now available in
http://localhost:3001
Note: Make sure you have a Client ID, Client Secret, and a YouTube API Key to make the requests to the API (Use Google Cloud Console to get these strings). Don't forget to configure your users, scopes, and redirect urls.
- Navigate to the
unu/directory. - Install the required packages:
npm install- Run the Next.js frontend:
npm run dev- The frontend is now available in
http://localhost:3000
- Log in to create a primary account.
- Follow the Google prompts.
- Click on "Link new account" to link a new account.
- Follow the Google prompts and choose the YouTube account you want to link.
- Click on the "Select Accounts" drop down to see and select your account.
- Click on any listed accounts you want to unsubscribe from.
- Click unsubscribe.
- Done! You are now unsubscribed from those accounts and a new subscription list for your account should appear.
The web application is planned for deployment after the refresh tokens are safely secured in the database. Proper error checks and documentation also need to be made to easily scale in the future.
The features that are urgent enough are dealing with rate limiting and surpassing API quota usage. One way to solve this would be to use Redis for caching. Once I have that set up, I can focus on adding additional services.
One feature I wanted to add was having categories for different channels. This would be done with a topic modeling API that analyzes the channel's data. This feature would also force a UI change, which would mean either modifying the existing frontend or swapping HeroUI for MaterialUI.
Any and all feedback is appreciated. Feel free to reach out if you encounter any issues.
Adrian Quiroz: adrianquiroz166@gmail.com


