NA
Nathan-Somto/Forge-Gen
A Mobile Application that provides AI features such as Image Generation and Background Image Removal
๐ Forge Gen
An AI-powered mobile SaaS application built on top of Cloudinary's image transformation APIs, inspired by JS Mastery's Imaginify.
๐ฒ Download App
Note: The app is only available on Android
๐ ๏ธ Tech Stack
- TypeScript
- Appwrite
- Cloudinary
- FlutterWave
- Expo
- React Native
- Expo Router
ScreenShots
โจ Key Features
- Image Transformations: Perform operations like background removal, image restoration, and object recoloring with ease.
- Authentication: Secure user login and registration.
- Payments: Payment integration with flutterwave for credit purchases
- Credit Management: Manage and track user credits for app services.
๐จ Design
Check out the figma design
Mobile App Navigation Structure
This Folder Structure was derived due to the neccessity of colocating navigation logic with screens
app/
โ (only one allowed at root )
โโโ stack.tsx # Stack navigation logic
โโโ drawer.tsx # Drawer navigation logic
โโโ tabs.tsx # Tab navigation logic
โ
โโโ screens/ # Folder containing all screen files and folders
โ โโโ Home.tsx # A screen represented as a file
โ โโโ Profile/ # A screen represented as a folder
โ โ โโโ stack.tsx # Stack navigation for Profile section (only one allowed at root)
โ โ โโโ screens/
โ โโโ [id].tsx # Dynamic screen for Profile section (e.g., User ID)
โ โโโ Edit.tsx # Static screen for Profile editing
โ โโโ Settings.tsx # Another screen as a fileKey Rules
- Root Level of Folders:
- At the root level of any folder, there can only be one of the following:
stack.tsxtabs.tsxdrawer.tsx
- These files define the navigation logic for that section.
- At the root level of any folder, there can only be one of the following:
- Screen Files:
- Screens can be either a file (React component) or a folder containing its own navigation logic.
- If a folder is used, it must contain one of the navigation files (
stack.tsx,tabs.tsx, ordrawer.tsx) at its root.
- Dynamic Routes:
- Use Next.js-style conventions for dynamic routes.
- Example: In the
Profilefolder, you can define a dynamic route with[id].tsxto create a dynamic profile screen for each user.
- Subfolders for Screens:
- Any folder that represents a screen must also contain a
screens/subfolder to hold additional screens under that navigation.
- Any folder that represents a screen must also contain a
Example
ProfileFolder:- Contains
stack.tsxfor managing stack-based navigation. - Has a
screenssubfolder containing the actual screens, such as[id].tsxfor a dynamic profile andEdit.tsxfor profile editing.
- Contains
Profile/
โโโ stack.tsx # Stack navigation at the root
โโโ screens/
โโโ [id].tsx # Dynamic screen for profile based on user ID
โโโ Edit.tsx # Static screen for editing profile๐ฆ Installation
To get started with Forge Gen locally, follow these steps:
- Clone the repository:
git clone https://github.com/nathan-somto/forge-gen.git
cd forge-gen- Create a cloudinary and appwrite account
cloudinary
appwrite - Get Your Environment variables for the cloudinary server and mobile app
Cloudinary Server Env
CLOUDINARY_API_KEY=''
CLOUDINARY_API_SECRET=''
CLOUDINARY_CLOUD_NAME=''Mobile App Env
EXPO_PUBLIC_APPWRITE_PROJECT_ID=''
EXPO_PUBLIC_APPWRITE_DATABASE_ID=''
EXPO_PUBLIC_APPWRITE_USER_COLLECTION_ID=''
EXPO_PUBLIC_APPWRITE_TRANS_COLLECTION_ID=''
EXPO_PUBLIC_APPWRITE_BUCKET_ID=''
EXPO_PUBLIC_APPWRITE_TRANSACTIONS_COLLECTION_ID=''
EXPO_PUBLIC_FLUTTER_WAVE_PUBLIC_KEY=''
EXPO_PUBLIC_APPWRITE_FUNCTION_ID=''- Install dependencies:
npm run get:packages- Deploy Appwrite Functions
npm run deploy:functions- Create a Development Build
cd mobile-app
npm run (android | ios)- Deploy Mobile App(Optional)
ensure you have eas installed locally and at the root level of the project run
npm run deploy:appOn this page
Languages
TypeScript99.4%JavaScript0.6%
Contributors
Created August 22, 2024
Updated September 18, 2024







