Neural Nexus - AI Model Hub
Star the Repoβ
Welcome to Neural Nexus
Welcome to Neural Nexus, a comprehensive AI model hub where you can upload, sell, and transfer ownership of your AI creations using various payment methods including cryptocurrency, UPI, PayPal, and net banking. We focus on building a vibrant community of creators and innovators shaping the future of AI, emphasizing innovation and collaboration.
We're inspired by the 'Radio on the Internet' concept for AIβpowered by strategic partnerships and a commitment to open access. Our mission is to democratize AI by providing free models and data, inspired by the Transformers library from Hugging Face, while also offering premium content for advanced users.
Features
- Upload AI Models: Share your models with the world
- Secure Payments: Process payments via Stripe, Razorpay (UPI), or Cryptocurrency (MetaMask)
- Modern Authentication: Sign in with Google, GitHub, email, or cryptocurrency wallets
- Ownership Transfer: Transfer model ownership with blockchain security
- Open Source Models: Access a comprehensive library of free models inspired by Transformers
- Premium Marketplace: Buy and sell premium models and datasets for advanced projects
- Modern UI: Responsive design with smooth animations and contemporary aesthetics
- Email Notifications: Receive important updates via email using SendGrid integration
Technology Stack
- Next.js: React framework for high-performance applications
- Tailwind CSS: Utility-first CSS framework for modern styling
- Framer Motion: Animation library for enhanced user experience
- Supabase: Open-source Firebase alternative for authentication and database management
- Stripe & Razorpay: Payment processing solutions
- SendGrid: Email delivery service for transactional emails
- Edge Functions: Lightweight serverless functions for optimal performance
Setup Guide (click to expand)
-
Clone the Repository:
git clone https://github.com/Drago-03/Neural-Nexus.git cd Neural-Nexus -
Install Dependencies:
npm install -
Set Environment Variables: Create a
.env.localfile in the root directory using the.env.local.exampleas a template:cp .env.local.example .env.localThen edit the file to add your actual credentials.
MongoDB Setup (click to expand)
a. Create a MongoDB Atlas account at MongoDB Atlas (free tier available)
b. Create a new cluster and database
c. Get your connection string:
- Go to Database > Connect > Connect your application
- Select Node.js as your driver and copy the connection string
- Replace
<password>with your database user password - Add the connection string to your
.env.localfile asMONGODB_URI - Set
MONGODB_DB_NAMEto your database name (default:neural_nexus)
d. For production deployments:
- Ensure your MongoDB Atlas IP allow list includes your deployment server IPs
- For Vercel, you need to add all Vercel deployment IPs or use 0.0.0.0/0 (allow all)
- The app includes fallback in-memory storage if MongoDB connection fails
e. Troubleshooting MongoDB connections:
- If you encounter TLS/SSL errors, make sure you're using a clean connection string without extra parameters
- Use this format:
mongodb+srv://username:[email protected]/dbname?retryWrites=true&w=majority - The app will automatically handle connection retries and fallbacks
Supabase Setup (click to expand)
a. Create a Supabase project at Supabase (free tier available)
b. Get your API credentials:
- Go to Project Settings > API
- Copy the URL, public anon key, and service role key
- Add them to your
.env.localfile
c. Initialize the database:
- After setting up your project and environment variables, run:
# Start your Next.js dev server npm run dev
# In a new terminal, initialize the database (one-time setup)
curl "http://localhost:3000/api/supabase-setup?setup_key=YOUR_SETUP_KEY_FROM_ENV"
```
d. Enable authentication providers:
- Go to Authentication > Providers
- Enable Email, Google, GitHub, etc. as needed
- Configure OAuth credentials for third-party providers
- For GitHub OAuth:
- Go to your GitHub account > Settings > Developer settings > OAuth Apps > New OAuth App
- Set the callback URL to exactly:
https://[YOUR-PROJECT-REF].supabase.co/auth/v1/callback - Copy the Client ID and Client Secret to Supabase GitHub provider settings
- It's critical that the callback URL matches exactly what Supabase expects
- For Google OAuth:
- Set the callback URL to exactly:
https://[YOUR-PROJECT-REF].supabase.co/auth/v1/callback - Make sure to add the same domain to your authorized redirect URIs
- Set the callback URL to exactly:
e. Enable anonymous authentication:
- Go to Authentication > Providers
- Scroll down to "Anonymous Sign-in" and toggle it on
- This allows users to try the platform without creating an account
f. Set up storage buckets:
- Go to Storage
- Create buckets for:
models,avatars,thumbnails - Set RLS policies for each bucket
SendGrid Setup (click to expand)
a. Create a SendGrid account at SendGrid (free tier available)
b. Get your API key:
- Go to Settings > API Keys > Create API Key
- Create a new API key with full access or restricted access to "Mail Send" only
- Copy the API key to your
.env.localfile asSENDGRID_API_KEY
c. Verify your sender identity:
- Go to Settings > Sender Authentication
- Verify a Single Sender or set up Domain Authentication
- Add the verified email address to your
.env.localfile asEMAIL_FROM
d. Test your email configuration:
node test-sendgrid.js [email protected]
e. For more details, see the Email Service Documentation
Firebase Setup (Legacy/Optional) (click to expand)
The app is transitioning from Firebase to Supabase, but can still use Firebase for some features.
a. Create a Firebase project at Firebase Console
b. Enable Authentication services:
- Go to Authentication > Sign-in method
- Enable Email/Password and Google sign-in methods
c. Create a Firestore database:
- Go to Firestore Database > Create database
- Start in production mode
- Choose a location close to your users
d. Set up Storage:
- Go to Storage > Get started
- Set up security rules for production
e. Get your Firebase config:
- Go to Project settings > General
- Scroll down to "Your apps" and select your web app
- Copy the Firebase config values to your
.env.localfile
Run Locally (click to expand)
npm run dev
Open http://localhost:3000 to view the application.
Neural Nexus NPM Package
A modern, TypeScript-first toolkit for connecting with AI models on the Neural Nexus platform. Effortlessly deploy, manage, and share models, integrate with a marketplace, and handle authentication and paymentsβall with a single, powerful npm package.
Official NPM: neural-nexus
Installation (click to expand)
Stable:
npm install neural-nexus
Alpha (v1) Version:
npm install neural-nexus@v1
API Key Management & Usage
All API requests require authentication using an API key. You can generate and manage your API keys from your Neural Nexus dashboard.
Step-by-Step Onboarding (click to expand)
- Sign up or log in at Neural Nexus Dashboard
- Navigate to API Keys in your account settings
- Click Generate New Key and select the key type (test, development, production, etc.)
- Copy your key (it will only be shown once!)
- Store your key securely (use environment variables, never commit to code)
Authenticating Requests (click to expand)
Include your API key in the Authorization header:
Authorization: Bearer YOUR_API_KEY
Example: JavaScript (fetch) (click to expand)
const response = await fetch('https://api.neuralnexus.biz/v1/models', {
headers: {
'Authorization': `Bearer ${process.env.NEURAL_NEXUS_API_KEY}`
}
});
const data = await response.json();
Example: Using the SDK (click to expand)
import { NeuralNexus } from 'neural-nexus';
const nexus = new NeuralNexus({
apiKey: process.env.NEURAL_NEXUS_API_KEY,
environment: 'production'
});
Example: Managing API Keys in JavaScript (click to expand)
async function createApiKey() {
const API_KEY = process.env.NEURAL_NEXUS_API_KEY;
const response = await fetch('https://api.neuralnexus.biz/v1/api-keys', {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'My Development Key',
type: 'development'
})
});
const data = await response.json();
console.log('New API key created:', data);
console.log('IMPORTANT: Save this key now as it won\'t be shown again!');
return data;
}
For more details, see the official npm package page.
Supabase Data Model
Supabase Table: user_profiles (click to expand)
CREATE TABLE user_profiles (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
user_id UUID REFERENCES auth.users(id) ON DELETE CASCADE,
first_name TEXT,
last_name TEXT,
display_name TEXT,
email TEXT,
bio TEXT,
avatar_url TEXT,
website TEXT,
social_links JSONB,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
Supabase Table: models (click to expand)
CREATE TABLE models (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
user_id UUID REFERENCES auth.users(id) ON DELETE CASCADE,
name TEXT NOT NULL,
description TEXT,
price DECIMAL(10, 2) DEFAULT 0,
category TEXT,
tags TEXT[],
file_url TEXT,
file_path TEXT,
file_size BIGINT,
file_type TEXT,
thumbnail_url TEXT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
downloads INTEGER DEFAULT 0,
rating DECIMAL(3, 2) DEFAULT 0,
is_public BOOLEAN DEFAULT true,
status TEXT DEFAULT 'active'
);
Setting Up Environment Variables on Vercel (click to expand)
- Go to your project settings in Vercel
- Navigate to Environment Variables
- Add all the variables from your
.env.localfile - Make sure to set
NEXT_PUBLIC_APP_ENV=production - Redeploy your application to apply the changes
MongoDB Configuration for Production (click to expand)
- In your Vercel deployment, ensure MongoDB connection string is correctly set
- Add
MONGODB_URIandMONGODB_DB_NAMEto your environment variables - If users report profile update errors, check the following:
- MongoDB connection string should be clean without unnecessary parameters
- The IP allowlist in MongoDB Atlas should include Vercel's deployment IPs
- The application includes fallback in-memory storage if the database connection fails
- User profiles will be stored temporarily and sync when the database connection is restored
- For persistent database issues, consider using MongoDB Realm/Atlas App Services for better connectivity
Monitoring and Analytics (click to expand)
- Supabase Dashboard: Track database usage, API calls, and authentication
- Firebase Analytics (if using): Track user engagement and app usage
- Vercel Analytics: Monitor page performance and user metrics
Edge Functions vs. Serverless Functions (click to expand)
This app uses both Edge Functions (for lightweight operations) and standard serverless functions (for heavier processing):
- Edge Functions: Fast, lightweight API routes that run globally close to users
- Serverless Functions: More powerful Node.js environments for database operations and complex processing
Web3 Wallet Integration (click to expand)
Neural Nexus includes a lightweight wallet connection system through the SimpleCryptoProvider. This replaces the previous TonConnect implementation.
Enabling the Wallet Connection (click to expand)
To enable wallet connection in your application:
-
Set the feature flag in your
.env.localfile:NEXT_PUBLIC_ENABLE_SIMPLE_CRYPTO=true -
The wallet connect button will automatically appear in the navbar when the feature flag is enabled.
-
For custom integration, you can use the
SimpleCryptoButtoncomponent:import dynamic from 'next/dynamic';
// Import with dynamic to avoid SSR issues const SimpleCryptoButton = dynamic( () => import('@/components/SimpleCryptoButton'), { ssr: false } );
// Then use it in your component
function MyComponent() {
return
4. For direct access to wallet state, use the `useSimpleCrypto` hook:
```tsx
import { useSimpleCrypto } from '@/providers/SimpleCryptoProvider';
function MyComponent() {
const { activeWallet, connectWallet, disconnectWallet } = useSimpleCrypto();
return (
<div>
{activeWallet ? (
<div>Connected to: {activeWallet}</div>
) : (
<button onClick={() => connectWallet('MetaMask')}>Connect</button>
)}
</div>
);
}
Policies & Documentation (click to expand)
We maintain comprehensive documentation on how we handle data, models, and content. Please review our policies for complete transparency:
- Privacy Policy: Learn how we protect your data and maintain information security. Read More
- Content Policy: Keep the vibes positive! Understand what content is cool to share on Neural Nexus. Read More
- Model Policies: Rules for uploading and sharing AI models. Let's keep the AI game fair and innovative. Read More
- Cookie Policy: We use cookies to make your experience smoother than butter. Find out how. Read More
- Updates & Changelog: Stay updated with the latest changes and features. We're always leveling up! Read More
These docs are here to ensure we're all on the same page, building a safe and creative space for AI innovation. Got questions? Hit us up! π¬
Build Instructions (click to expand)
When building the project for production, you might encounter "document is not defined" errors for authentication pages. This is a common issue with Next.js when client-side features are used during static site generation.
To solve this issue, use our custom build and start scripts:
# Step 1: Use our custom build script that patches the auth pages
npm run custom-build
# Step 2: Start the application using our custom server
npm run custom-start
Our custom build script (build-with-cleanup.sh) handles the following:
- Cleans up previous build artifacts
- Runs the Next.js build process
- If auth page errors occur, it patches the build by:
- Creating fallback static HTML files for problematic routes
- Copying these files to the appropriate output directories
The custom server (dev-server.js) then:
- Serves the static HTML fallbacks for auth routes
- Handles all other requests normally through Next.js
This approach ensures that authentication pages work correctly in production without the "document is not defined" errors.
Build Instructions for Auth Pages (click to expand)
Next.js has challenges with client-side authentication pages during static site generation, often resulting in "document is not defined" errors. This project includes special handling to resolve these issues:
Using the Custom Build Process (click to expand)
# Run the custom build script that handles auth page issues
npm run custom-build
This script:
- Cleans previous build artifacts
- Creates static HTML fallbacks for auth pages if needed
- Runs the build with proper environment variables
- Patches the generated files to ensure auth pages work correctly
Using the Custom Server (click to expand)
After building the project, start it with:
# Start the custom server that handles auth pages
npm run custom-start
This custom server serves static HTML fallbacks for authentication pages, preventing issues with client-side code during the initial page load.
How It Works (click to expand)
The solution uses multiple techniques:
- Middleware detection for build vs. runtime environments
- Static HTML fallbacks for auth pages
- Custom server for serving static content
- Next.js configuration to properly handle client-only pages
If you modify auth-related pages, ensure the build process is aware of these pages by updating the configuration in:
middleware.tsnext.config.jsbuild-with-cleanup.sh
Community & Support
Join our active community to get help, share ideas, and connect with other developers!
Supabase Data Model
The application uses the following Supabase tables:
user_profiles
CREATE TABLE user_profiles (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
user_id UUID REFERENCES auth.users(id) ON DELETE CASCADE,
first_name TEXT,
last_name TEXT,
display_name TEXT,
email TEXT,
bio TEXT,
avatar_url TEXT,
website TEXT,
social_links JSONB,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
models
CREATE TABLE models (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
user_id UUID REFERENCES auth.users(id) ON DELETE CASCADE,
name TEXT NOT NULL,
description TEXT,
price DECIMAL(10, 2) DEFAULT 0,
category TEXT,
tags TEXT[],
file_url TEXT,
file_path TEXT,
file_size BIGINT,
file_type TEXT,
thumbnail_url TEXT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
downloads INTEGER DEFAULT 0,
rating DECIMAL(3, 2) DEFAULT 0,
is_public BOOLEAN DEFAULT true,
status TEXT DEFAULT 'active'
);
Deployment on Vercel
- Push your code to a GitHub repository
- Go to Vercel and create a new project
- Connect your GitHub repository
- Set all the environment variables from your
.env.localfile in the Vercel dashboard - Deploy your application
Setting Up Environment Variables on Vercel
- Go to your project settings in Vercel
- Navigate to Environment Variables
- Add all the variables from your
.env.localfile - Make sure to set
NEXT_PUBLIC_APP_ENV=production - Redeploy your application to apply the changes
MongoDB Configuration for Production
- In your Vercel deployment, ensure MongoDB connection string is correctly set
- Add
MONGODB_URIandMONGODB_DB_NAMEto your environment variables - If users report profile update errors, check the following:
- MongoDB connection string should be clean without unnecessary parameters
- The IP allowlist in MongoDB Atlas should include Vercel's deployment IPs
- The application includes fallback in-memory storage if the database connection fails
- User profiles will be stored temporarily and sync when the database connection is restored
- For persistent database issues, consider using MongoDB Realm/Atlas App Services for better connectivity
Monitoring and Analytics
Both Supabase and Firebase provide tools to monitor your application:
- Supabase Dashboard: Track database usage, API calls, and authentication
- Firebase Analytics (if using): Track user engagement and app usage
- Vercel Analytics: Monitor page performance and user metrics
Edge Functions vs. Serverless Functions
This app uses both Edge Functions (for lightweight operations) and standard serverless functions (for heavier processing):
- Edge Functions: Fast, lightweight API routes that run globally close to users
- Serverless Functions: More powerful Node.js environments for database operations and complex processing
Web3 Wallet Integration
Neural Nexus includes a lightweight wallet connection system through the SimpleCryptoProvider. This replaces the previous TonConnect implementation.
Enabling the Wallet Connection
To enable wallet connection in your application:
-
Set the feature flag in your
.env.localfile:NEXT_PUBLIC_ENABLE_SIMPLE_CRYPTO=true -
The wallet connect button will automatically appear in the navbar when the feature flag is enabled.
-
For custom integration, you can use the
SimpleCryptoButtoncomponent:import dynamic from 'next/dynamic';
// Import with dynamic to avoid SSR issues const SimpleCryptoButton = dynamic( () => import('@/components/SimpleCryptoButton'), { ssr: false } );
// Then use it in your component
function MyComponent() {
return
4. For direct access to wallet state, use the `useSimpleCrypto` hook:
```tsx
import { useSimpleCrypto } from '@/providers/SimpleCryptoProvider';
function MyComponent() {
const { activeWallet, connectWallet, disconnectWallet } = useSimpleCrypto();
return (
<div>
{activeWallet ? (
<div>Connected to: {activeWallet}</div>
) : (
<button onClick={() => connectWallet('MetaMask')}>Connect</button>
)}
</div>
);
}
Policies & Documentation
We maintain comprehensive documentation on how we handle data, models, and content. Please review our policies for complete transparency:
- Privacy Policy: Learn how we protect your data and maintain information security. Read More
- Content Policy: Keep the vibes positive! Understand what content is cool to share on Neural Nexus. Read More
- Model Policies: Rules for uploading and sharing AI models. Let's keep the AI game fair and innovative. Read More
- Cookie Policy: We use cookies to make your experience smoother than butter. Find out how. Read More
- Updates & Changelog: Stay updated with the latest changes and features. We're always leveling up! Read More
These docs are here to ensure we're all on the same page, building a safe and creative space for AI innovation. Got questions? Hit us up! π¬
Build Instructions
When building the project for production, you might encounter "document is not defined" errors for authentication pages. This is a common issue with Next.js when client-side features are used during static site generation.
To solve this issue, use our custom build and start scripts:
# Step 1: Use our custom build script that patches the auth pages
npm run custom-build
# Step 2: Start the application using our custom server
npm run custom-start
Our custom build script (build-with-cleanup.sh) handles the following:
- Cleans up previous build artifacts
- Runs the Next.js build process
- If auth page errors occur, it patches the build by:
- Creating fallback static HTML files for problematic routes
- Copying these files to the appropriate output directories
The custom server (dev-server.js) then:
- Serves the static HTML fallbacks for auth routes
- Handles all other requests normally through Next.js
This approach ensures that authentication pages work correctly in production without the "document is not defined" errors.
Build Instructions for Auth Pages
Next.js has challenges with client-side authentication pages during static site generation, often resulting in "document is not defined" errors. This project includes special handling to resolve these issues:
Using the Custom Build Process
# Run the custom build script that handles auth page issues
npm run custom-build
This script:
- Cleans previous build artifacts
- Creates static HTML fallbacks for auth pages if needed
- Runs the build with proper environment variables
- Patches the generated files to ensure auth pages work correctly
Using the Custom Server
After building the project, start it with:
# Start the custom server that handles auth pages
npm run custom-start
This custom server serves static HTML fallbacks for authentication pages, preventing issues with client-side code during the initial page load.
How It Works
The solution uses multiple techniques:
- Middleware detection for build vs. runtime environments
- Static HTML fallbacks for auth pages
- Custom server for serving static content
- Next.js configuration to properly handle client-only pages
If you modify auth-related pages, ensure the build process is aware of these pages by updating the configuration in:
middleware.tsnext.config.jsbuild-with-cleanup.sh
Overview
Neural Nexus is a powerful platform for AI model deployment, collaboration, and marketplace. It integrates modern web technologies with AI capabilities to provide a seamless experience for researchers, developers, and users.
Key Features
- π§ AI model marketplace and deployment
- π Secure authentication with multiple providers
- π° Payment processing with Stripe and Web3
- π Advanced analytics dashboard
- π Fast, modern UI built with Next.js and Tailwind CSS
Tech Stack
- Frontend: Next.js, React, Tailwind CSS
- Authentication: Supabase Auth, NextAuth.js
- Database: Supabase PostgreSQL
- Payment: Stripe, Coinbase SDK
- Deployment: Vercel/Netlify compatible
Getting Started
Prerequisites
- Node.js 18+
- npm or yarn
Installation
# Clone the repository
git clone https://github.com/Drago-03/neural-nexus.git
cd neural-nexus
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env.local
# Edit .env.local with your credentials
# Start development server
npm run dev
Build Instructions
When building the project for production, you might encounter "document is not defined" errors for authentication pages. This is a common issue with Next.js when client-side features are used during static site generation.
For the best production build experience, use our custom build scripts:
# Standard build with patching
npm run build
# OR for a more thorough approach with cleanup
npm run custom-build
The build process includes:
- Pre-build preparation of static HTML fallbacks
- The main Next.js build
- Post-build patching to ensure all files are present
Running in Production
# Standard Next.js server
npm run start
# Custom server with enhanced handling of auth pages
npm run custom-start
Troubleshooting Common Issues
"document is not defined" Errors
These errors occur during server-side rendering of pages that use client-side browser objects. Our build process automatically handles this by:
- Using static HTML fallbacks for auth pages
- Patching build artifacts post-build
- Setting proper runtime configurations
Edge Runtime Configuration
We use the experimental edge runtime for authentication pages. If you encounter issues:
# Check that your next.config.js has the correct settings
# Ensure each auth page exports the runtime configuration
export const runtime = "experimental-edge";
Missing Build Artifacts
If your deployment is missing critical files:
# Run the patch script manually
node ./scripts/patch-build.js
Contributing
Contributions are welcome! Please check out our Contributing Guide for details.
Open Bounties
Get paid to contribute! Check out our open bounties and earn rewards for your contributions.
License
This project is licensed under the MIT License - see the LICENSE file for details.
GitHub Workflows and Automation
This repository uses several GitHub Actions workflows to automate processes and improve collaboration:
Automatic PR Labeling
Pull requests are automatically labeled based on the files changed:
- frontend: Changes to app, src, components, or public directories
- backend: Changes to lib, api, server, or providers directories
- documentation: Changes to markdown files or docs directory
- config: Changes to configuration files
- dependencies: Changes to package.json or lock files
- testing: Changes to test files
- ui: Changes to CSS, styles, or UI components
- auth: Changes to authentication-related code
- feature: Changes to feature-specific directories
PRs are also labeled by size:
- XS: < 10 lines
- S: 10-99 lines
- M: 100-299 lines
- L: 300-499 lines
- XL: 500-999 lines
- XXL: 1000+ lines
Issue Labeling
Issues are automatically labeled based on their title and content:
- bug: Issues reporting bugs or problems
- enhancement: Feature requests and improvements
- documentation: Documentation-related issues
- question: Questions and help requests
- performance: Performance-related issues
- security: Security-related issues
- ui: UI/UX-related issues
- auth: Authentication-related issues
- good first issue: Issues suitable for newcomers
Dependency Management
Dependabot automatically creates PRs for dependency updates:
- NPM dependencies are checked weekly
- GitHub Actions are checked weekly
- All updates require manual review and approval
Stale Issue Management
Issues and PRs with no activity for 30 days are marked as stale and closed after 7 more days of inactivity. Issues labeled as bug, security, enhancement, documentation, or good first issue are exempt.
Code Ownership
The CODEOWNERS file automatically assigns reviewers to PRs based on the files changed.
Sponsors
We're grateful to our sponsors who make this project possible.
Storage Service
The Neural Nexus application includes a flexible storage service that can operate in two modes:
-
Google Cloud Storage (Production): When properly configured with Google Cloud credentials, the application will use Google Cloud Storage for file uploads and data storage.
-
Local Fallback (Development): If Google Cloud credentials are missing or invalid, the application will automatically fall back to local file system storage, which is ideal for development and testing.
Configuration
To use Google Cloud Storage, set the following environment variables:
GOOGLE_CLOUD_PROJECT_ID=your-project-id
GOOGLE_CLOUD_STORAGE_BUCKET=your-bucket-name
GOOGLE_CLOUD_ACCESS_KEY=your-access-key
GOOGLE_CLOUD_SECRET_KEY=your-secret-key
If these variables are not set, the system will automatically use the local storage fallback.
Testing Storage
You can test the storage implementation using the provided test scripts:
# Test local storage fallback
node test-storage-fallback.js
The storage service is used for:
- Storing model files
- Uploading model thumbnails
- Storing user assets
- Managing application data
User Profiles with Google Cloud Storage
Neural Nexus now supports storing user profiles and avatars on Google Cloud Storage. This includes:
- Profile Data Storage: User profiles are stored in Google Cloud Storage with automatic fallback to in-memory storage for development.
- Avatar Upload: Users can upload, update, and delete their profile pictures, which are stored in Google Cloud Storage.
- Email Notifications: Users receive email notifications when their profiles are updated (if enabled in preferences).
Setting Up Google Cloud Storage
- Create a Google Cloud Storage bucket for your user profiles and avatars
- Add the following environment variables to your
.env.localfile:GOOGLE_CLOUD_PROJECT_ID=your_project_id GOOGLE_CLOUD_STORAGE_BUCKET=your_bucket_name GOOGLE_CLOUD_ACCESS_KEY=your_access_key GOOGLE_CLOUD_SECRET_KEY=your_secret_key GOOGLE_CLOUD_CLIENT_EMAIL=your_client_email - Ensure your storage bucket has proper CORS configuration to allow uploads from your domain
User Profile Features
- Profile Editing: Edit your profile at
/profile/edit - Profile Viewing: View your profile at
/profile - Avatar Management: Upload, update, and delete your avatar
- Social Links: Add links to your social media profiles
- Customizable Settings: Manage email notification preferences
For more details, see the User Profiles Documentation.
Contributing
Got ideas to make this even more lit? Drop a PR or issue. Let's build this together! π‘
Contributors
Thanks to all our awesome contributors who are helping build Neural Nexus! π₯
"The future belongs to those who believe in the beauty of their code."
β Neural-Nexus Team
License
Β© 2025 Indie Hub. All rights reserved. Keep it real, fam! βοΈ