Genith is an image and video generation app that leverages AI/ML technology to create content from text prompts. The app uses Pinata for secure, decentralized storage of all generated media, ensuring users can easily store and fetch their creations.
This project was built using modern technologies, including Next.js, TypeScript, Clerk for authentication, Convex.dev as the database, and hosted with Vercel for seamless deployment.
- Tech Stack
- Features
- Getting Started
- Pinata Integration
- Environment Variables
- Running Locally
- Deployment
- Contributing
- License
The following technologies were used to build Genith:
- Fal-ai: AI/ML technology for generating images and videos from text prompts.
- Pinata: Secure, decentralized storage for all generated media.
- Next.js: A fast and responsive framework for server-side rendering and static site generation.
- TypeScript: For adding type safety and improving code quality.
- Clerk: Authentication and user management system.
- Convex.dev: The database used for handling data efficiently.
- Vercel: Hosting platform for seamless deployment.
- Tailwind CSS: Utility-first CSS framework for building modern UIs.
- AI-Driven Content Generation: Users can generate unique images and videos based on text prompts using Fal-ai.
- Pinata for Storage: Seamless and secure decentralized storage of all media.
- Community Engagement: Users can upvote content, fostering a collaborative creative community.
- Authentication: Secure login and user management with Clerk.
- Responsive Design: Built with Tailwind CSS for a clean, modern, and responsive UI.
- Efficient Database: Uses Convex.dev for handling user data and interactions.
To run Genith locally, follow these steps.
- Node.js installed (v14 or higher).
- npm or yarn or bun as the package manager.
Clone the repository:
bash
Copy code
git clone https://github.com/yourusername/genith-ai.git
cd genith-ai
Install dependencies:
bash
Copy code
npm install
# or
yarn install
# or
bun install
To start the development server:
bash
Copy code
npm run dev
# or
yarn dev
# or
bun run dev
Open http://localhost:3000 with your browser to see the app in action.
Genith leverages Pinata for secure and decentralized media storage. All images and videos generated by users are stored on Pinata’s IPFS, making them easily retrievable and securely stored.
To integrate Pinata into your local environment:
- Sign up for a Pinata account at Pinata.
- Generate an API Key from your Pinata dashboard.
- Add your Pinata API Key and Pinata Secret Key to the
.env.local
file.
bash
Copy code
NEXT_PUBLIC_PINATA_API_KEY=your_pinata_api_key
PINATA_SECRET_API_KEY=your_pinata_secret_key
- All media uploads will now be routed through Pinata for secure storage on the decentralized IPFS network.
To run Genith, you will need to set up environment variables. Create a .env.local
file in the root directory and add the following:
bash
Copy code
FAL_KEY=your_fal_ai_api_key
NEXT_PUBLIC_PINATA_API_KEY=your_pinata_api_key
PINATA_SECRET_API_KEY=your_pinata_secret_key
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
CLERK_SECRET_KEY=your_clerk_secret_key
CLERK_WEBHOOK_SECRET=your_clerk_webhook_key (to connect clerk auth with convex)
NEXT_PUBLIC_CONVEX_URL=your_convex_url
NEXT_PUBLIC_CONVEX_HTTP_URL=your_convex_http_url (for webhooks)
Replace the placeholders with the respective values for your Pinata, Clerk, and Convex.dev configurations.
To run Genith locally for development purposes:
- Clone the repository and install dependencies as mentioned in the Getting Started section.
- Run the development server:
bash
Copy code
npm run dev
- Open http://localhost:3000 in your browser to access the app.
Genith is hosted using Vercel. To deploy the app:
- Create a Vercel account at Vercel.
- Link the project to your Vercel account.
- Add the necessary environment variables in your Vercel project settings.
- Deploy the application:
bash
Copy code
vercel deploy
Your app will be deployed at https://your-app-name.vercel.app
.
Contributions are welcome! Here’s how you can contribute:
- Fork the repository.
- Create a new feature branch (
git checkout -b feature/your-feature-name
). - Make your changes and commit them (
git commit -m 'Add new feature'
). - Push to the branch (
git push origin feature/your-feature-name
). - Open a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.