/Uniport

This repository represents the minor project of my college academics, which is a Next JS Full Stack SaaS Application - A Unified platform for various AI toolss.

Primary LanguageTypeScript


Project Banner

Visit the website Uniport and seamlessly access various AI tools at one place!

  1. πŸ€– Introduction
  2. βš™οΈ Tech Stack
  3. πŸ”‹ Features
  4. 🀸 Quick Start
  5. πŸ•ΈοΈ Details

This Next JS full Stack application is my university project work that I with my teammates accomplished in sixth semester of my degree of Bachelor of Technology. Uniport serves as a single port where users can seamlessly access and utilize different AI functionalities to enhance their workflows and creative endeavors, hence the name Uniport.

The project leverages cutting-edge technologies such as Next.js 14 for both backend and frontend development, React for dynamic user interfaces, Tailwind CSS for sleek and responsive design, and Prisma for seamless connectivity with a MySQL database hosted on Aiven.

  • Next.JS 14
  • Typescript
  • MySQL database with Prisma
  • Clerk Authentication
  • Tailwind CSS , Aceternity UI

πŸ‘‰ Clerk Authentication System

  • Implement Clerk authentication system for secure user authentication.
  • Allow users to sign in using their Google accounts.

πŸ‘‰ Sidebar and Navigation

  • Develop a sidebar component to facilitate navigation between different sections of the application.

πŸ‘‰ Dashboard UI

  • Present users with a glimpse of each AI tool's functionality and purpose.

πŸ‘‰ AI Tools UI and Functionality

  • Implemented functionality for each AI tool, such as conversation, image generation, music composition, video generation, code generation and Google Gemini.
  • Ensure seamless integration with APIs from Gemini, OpenAI and Replicate AI for generating responses based on user input.

πŸ‘‰ API Limit Tracking

  • Display API usage statistics and inform users about their remaining free trials.

πŸ‘‰ Pro Access and Payment Integration

  • Integrate Stripe payment system to enable users to subscribe for unlimited access to AI tools.

πŸ‘‰ Customer Support Chatbot Integration

  • Incorporated Crisp chatbot service to provide users with customer support and assistance.

πŸ‘‰ Landing Page for Uniport

  • A simple landing page, created using Aceternity UI where the user can get an introduction about the application.
  • Users can create their account on Uniport by visiting the Landing page.

The list continues with addition of new AI tools that are roaring in the market as we explore this super responsive application.

Want to add an AI to Uniport? Feel free to contribute to this open source project by following the quick start guide below.

Follow these steps to set up the project locally on your machine.

Prerequisites

Make sure you have the following installed on your machine:

Cloning the Repository

git clone https://github.com/iAryanK/Uniport.git
cd Uniport

Installation

Install the project dependencies using npm:

npm install

Set Up Environment Variables

Create a new file named .env in the root of your project and add the following content:

NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=

NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/dashboard
NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/dashboard

OPENAI_API_KEY=
GEMINI_API_KEY=
REPLICATE_API_TOKEN=

DATABASE_URL=

NEXT_PUBLIC_APP_URL=

STRIPE_WEBHOOK_SECRET=
STRIPE_API_KEY=

Replace the placeholder values with your actual credentials. You can obtain these credentials by signing up on these corresponding websites from Clerk, OpenAI, Gemini, Replicate, Aiven and Stripe.

Running the Project

npm run dev

Open http://localhost:3000 in your browser to view the project.

Why I preferred NEXT JS with Typescript?
πŸ˜€ Typescript for type safety
πŸ˜€ simplifies development process
πŸ˜€ optimizes web applications
πŸ˜€ Server side and client side rendering
πŸ˜€ Inbuilt Search Engine Optimization
πŸ˜€ File and folder based routing
πŸ˜€ FullStack application creating capability
πŸ˜€ Automatic code splitting

And at the end of the day, it is just an extention of ReactJs.πŸ˜€
Core Concepts implemented in Uniport
Following are the concepts of NextJS used in Uniport-
➑️ File and Folder based routing
➑️ Client and server components
➑️ Routing and special NextJS files
➑️ Data fetching Strategies
➑️ NextJs Server Actions
➑️ Static and Dynamic Metadata

In addition to these, I used
➑️ MySQL, a relational database
➑️ zod validations
➑️ zustand for global context
➑️ concept of webhooks