Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Findify is a repository which allows local vendors to register their businesses on Our Website and user can find the nearby businesses from their location.

Notifications You must be signed in to change notification settings

aryaan022/Findify

Repository files navigation

🎯 Findify - Local Business Discovery Platform

Discover Local Businesses β€’ Connect with Communities β€’ Support Local Economy

Node.js License MongoDB Express.js

Findify Banner

πŸ“‘ Table of Contents


About Findify

Findify is a comprehensive full-stack web application that bridges the gap between consumers and local businesses. The platform enables users to discover, review, and connect with businesses in their area, while providing business owners with tools to manage their presence and engage with customers.

🎯 Mission

To empower local economies by creating a transparent, community-driven marketplace where businesses can thrive and customers can discover authentic local experiences.

βœ… Current Status

  • Production Ready: Full authentication system with OTP verification
  • Features Complete: Reviews, ratings, messaging, premium accounts
  • Performance Optimized: Smooth animations, responsive design
  • Security Enhanced: Multi-provider OAuth, secure password reset

✨ Key Features

πŸ‘₯ User Features

  • πŸ“ Location-Based Discovery

    • Find nearby businesses using geolocation
    • Interactive Mapbox integration
    • Distance-based filtering and sorting
    • Real-time location validation
  • ⭐ Review & Rating System

    • Leave detailed reviews with 1-5 star ratings
    • View average ratings and review counts
    • Edit or delete personal reviews
    • See review history and timestamps
  • ❀️ Favorites Management

    • Save favorite businesses
    • Quick access to saved businesses
    • Persistent storage across sessions
    • Favorites count and management
  • πŸ” Advanced Search

    • Search by business name or keywords
    • Filter by category, rating, distance
    • Real-time search results
    • Category-based browsing with sorting
  • πŸ’¬ Messaging System

    • Direct messaging with businesses
    • Real-time message notifications
    • Message history and persistence
    • Unread message counter
  • πŸ“± Responsive Design

    • Mobile-first approach
    • Works seamlessly on all devices
    • Touch-friendly interface
    • Fast loading times with optimizations

🏒 Business Owner Features

  • πŸͺ Business Profile Management

    • Create comprehensive business listings
    • Upload and manage business images
    • Edit business information in real-time
    • Manage business hours and details
  • πŸ“Š Analytics Dashboard

    • View profile statistics and traffic
    • Track customer reviews and ratings
    • Monitor message conversations
    • Performance metrics and insights
  • πŸ‘οΈ Premium Features

    • Featured business placement
    • Premium badge on listings
    • Higher search visibility
    • Featured carousel placement
    • Enhanced customer reach
  • πŸ’Ό Business Operations

    • Respond to customer messages
    • Track and manage reviews
    • Update business information
    • Manage business images and gallery

πŸ” Advanced Security

  • Email Verification (OTP)

    • 6-digit OTP sent to email
    • 10-minute expiry window
    • Resend OTP functionality
    • Email validation on registration
  • Multi-Provider Authentication

    • Local email/password authentication
    • Google OAuth integration
    • GitHub OAuth integration
    • Account linking and management
  • Secure Password Management

    • Bcrypt password hashing
    • Forgot password with OTP verification
    • Password reset confirmation
    • Secure session management
    • Passport.js session handling

πŸ› οΈ Tech Stack

Detailed Technology Table

Layer Technology Version Purpose
Runtime Node.js v22.13.1 JavaScript server environment
Framework Express.js Latest Web application framework
Database MongoDB Atlas NoSQL document database
ODM Mongoose Latest MongoDB object mapping
Auth Passport.js Latest Authentication middleware
OAuth Providers Google + GitHub Latest Multi-provider authentication
Templating EJS + ejs-mate Latest Server-side rendering
CSS Framework Bootstrap v5.3.7 Responsive UI framework
Icons Lucide Icons Latest Modern icon library
Maps Mapbox GL v3.14.0 Interactive mapping service
Image Storage Cloudinary Latest Cloud image management
Email Service Resend Latest Transactional emails
Payments Razorpay Latest Payment processing
Password Hash Bcrypt Latest Secure password hashing
Crypto Node.js crypto Built-in OTP generation

πŸ“ Project Structure

Local Business Finder/
β”‚
β”œβ”€β”€ πŸ“„ app.js # Main Express application (2377 lines)
β”œβ”€β”€ πŸ“„ cloudconfig.js # Cloudinary configuration
β”œβ”€β”€ πŸ“„ createAdmin.js # Admin creation utility
β”œβ”€β”€ πŸ“„ mapbox.js # Mapbox integration
β”œβ”€β”€ πŸ“„ middleware.js # Custom middleware functions
β”œβ”€β”€ πŸ“„ package.json # Project dependencies
β”œβ”€β”€ πŸ“– README.md # Complete documentation
β”‚
β”œβ”€β”€ πŸ“‚ models/ # Mongoose Data Models
β”‚ β”œβ”€β”€ Business.js # Business schema with GeoJSON
β”‚ β”œβ”€β”€ User.js # User schema with OAuth fields
β”‚ └── Review.js # Review schema with ratings
β”‚
β”œβ”€β”€ πŸ“‚ routes/ # Express Route Handlers
β”‚ β”œβ”€β”€ auth.js # Authentication routes
β”‚ └── business.js # Business CRUD routes
β”‚
β”œβ”€β”€ πŸ“‚ views/ # EJS Templates (Server-side)
β”‚ β”œβ”€β”€ layouts/
β”‚ β”‚ └── boilerplate.ejs # Main layout template
β”‚ β”œβ”€β”€ index.ejs # Home page with featured businesses
β”‚ β”œβ”€β”€ discover.ejs # Business discovery page
β”‚ β”œβ”€β”€ show.ejs # Business details page
β”‚ β”œβ”€β”€ edit.ejs # Edit business page
β”‚ β”œβ”€β”€ new.ejs # Create business page
β”‚ β”œβ”€β”€ about.ejs # About page
β”‚ β”œβ”€β”€ contact.ejs # Contact page
β”‚ β”œβ”€β”€ login.ejs # Login page with OAuth
β”‚ β”œβ”€β”€ register.ejs # Registration page with OAuth
β”‚ β”œβ”€β”€ verify-otp.ejs # OTP verification form
β”‚ β”œβ”€β”€ forgot-password.ejs # Forgot password form
β”‚ β”œβ”€β”€ reset-password.ejs # Reset password form
β”‚ β”œβ”€β”€ dashboard.ejs # Admin dashboard
β”‚ β”œβ”€β”€ user-dashboard.ejs # User profile dashboard
β”‚ β”œβ”€β”€ admin-dashboard.ejs # Admin management panel
β”‚ β”œβ”€β”€ Premium.ejs # Premium features page
β”‚ β”œβ”€β”€ Privacy.ejs # Privacy policy
β”‚ β”œβ”€β”€ Terms.ejs # Terms of service
β”‚ β”œβ”€β”€ error.ejs # Error page
β”‚ β”œβ”€β”€ chatbot.ejs # Chatbot interface
β”‚ β”œβ”€β”€ chatbot-analytics.ejs # Chatbot analytics
β”‚ └── edit-review.ejs # Edit review form
β”‚
β”œβ”€β”€ πŸ“‚ public/ # Static Assets
β”‚ β”œβ”€β”€ css/
β”‚ β”‚ β”œβ”€β”€ index.css # Main styles + animations
β”‚ β”‚ └── chatbot.css # Chatbot styling
β”‚ β”œβ”€β”€ js/
β”‚ β”‚ β”œβ”€β”€ chatbot.js # Chatbot functionality
β”‚ β”‚ └── premium.js # Premium features logic
β”‚ β”œβ”€β”€ Images/ # Static images
β”‚ └── sitemap.xml # XML sitemap for SEO
β”‚
└── πŸ“‚ utils/ # Utility Functions
 └── otp.js # OTP generation + email

πŸ—οΈ System Architecture

Overall Architecture Flow

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ CLIENT LAYER β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ EJS HTML β”‚ β”‚Bootstrap β”‚ β”‚JavaScriptβ”‚ β”‚
β”‚ β”‚ Templates β”‚ β”‚CSS + Animβ”‚ β”‚Interactivityβ”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 β”‚ HTTP/HTTPS
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ EXPRESS.JS SERVER β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Routes Layer β”‚
β”‚ β”œβ”€ /auth/* (Authentication) β”‚
β”‚ β”œβ”€ /business/* (Business Operations) β”‚
β”‚ β”œβ”€ /messages/* (Messaging) β”‚
β”‚ └─ /search (Discovery) β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Middleware Stack β”‚
β”‚ β”œβ”€ Express.json (Body Parsing) β”‚
β”‚ β”œβ”€ Passport.js (Authentication) β”‚
β”‚ β”œβ”€ Express-session (Sessions) β”‚
β”‚ └─ Custom Middleware (Validation) β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Business Logic β”‚
β”‚ β”œβ”€ User Management β”‚
β”‚ β”œβ”€ Business Operations β”‚
β”‚ β”œβ”€ Review System β”‚
β”‚ └─ Messaging β”‚
β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 β”‚ β”‚ β”‚ β”‚ β”‚
 β”Œβ”€β”€β”€β–Όβ”€β”€β”β”‚ β”Œβ”€β”€β”€β”€β”€β–Όβ”€β”β”Œβ”€β”€β”€β–Όβ”€β”€β”β”Œβ”€β–Όβ”€β”€β”€β”
 β”‚MongoDBβ”‚β”‚ β”‚Mapbox β”‚β”‚Resendβ”‚β”‚Razorβ”‚
 β”‚(Data) β”‚β”‚ β”‚(Maps) β”‚β”‚(Emailβ”‚β”‚pay β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”˜β”‚ β”‚ β”‚β”‚ β”‚β”‚ β”‚
 β””β”€β–Όβ”€β”€β”€β”€β”€β”€β”˜β””β”€β”€β”€β”€β”€β”€β”˜β””β”€β”€β”€β”€β”€β”˜

Authentication Flow Diagram

User Registration/Login Request
 β”‚
 β”œβ”€ Option 1: Local (Email/Password)
 β”‚ β”œβ”€ Register β†’ OTP Email β†’ Verify β†’ Account Created
 β”‚ β”œβ”€ Login β†’ Validate Credentials β†’ Session Created
 β”‚ └─ Forgot Password β†’ OTP Email β†’ Reset β†’ New Password
 β”‚
 β”œβ”€ Option 2: Google OAuth
 β”‚ β”œβ”€ Redirect to Google β†’ User Approves β†’ Get Auth Code
 β”‚ β”œβ”€ Exchange Code for Profile β†’ Create/Update User
 β”‚ └─ Session Created
 β”‚
 └─ Option 3: GitHub OAuth
 β”œβ”€ Redirect to GitHub β†’ User Approves β†’ Get Auth Code
 β”œβ”€ Exchange Code for Profile β†’ Create/Update User
 └─ Session Created
 β”‚
 β–Ό
 Passport.js Validation
 β”‚
 β–Ό
 MongoDB User Document
 β”‚
 β–Ό
 Express-session Created
 β”‚
 β–Ό
 User Authenticated βœ“

πŸ’Ύ Database Schema

User Model (Authentication & Profile)

{
 // Basic Information
 username: String (unique, required),
 email: String (unique, required),
 password: String (hashed with bcrypt),
 role: String (enum: ['user', 'admin'], default: 'user'),
 
 // Email Verification (OTP)
 otp: String (6-digit code),
 otpExpiry: Date (10-minute window),
 isEmailVerified: Boolean (email confirmation status),
 
 // Password Reset (OTP)
 resetOtp: String (6-digit code),
 resetOtpExpiry: Date (15-minute window),
 
 // OAuth Providers
 googleId: String (Google OAuth unique ID),
 githubId: String (GitHub OAuth unique ID),
 provider: String (enum: ['local', 'google', 'github']),
 
 // Profile Information
 profilePicture: String (URL from OAuth or upload),
 
 // Timestamps
 createdAt: Date,
 updatedAt: Date
}

Business Model (Listings)

{
 // Basic Information
 Name: String (business name),
 Category: String (category filter),
 description: String (business description),
 address: String (full address),
 
 // Location (GeoJSON for Mapbox)
 location: {
 type: Point,
 coordinates: [longitude, latitude]
 },
 
 // Contact Information
 contactNumber: String,
 email: String,
 website: String (optional),
 
 // Images & Media
 Image: {
 public_id: String (Cloudinary ID),
 url: String (Cloudinary URL)
 },
 
 // Ratings & Reviews
 avgRating: Number (average of all reviews),
 reviewCount: Number (total reviews),
 
 // Relationships
 Owner: ObjectId (Reference to User),
 reviews: [ObjectId] (Reference to Reviews),
 
 // Timestamps
 createdAt: Date,
 updatedAt: Date
}

Review Model (User Reviews)

{
 // Review Content
 content: String (review text),
 rating: Number (1-5 star rating),
 
 // References
 author: ObjectId (User who wrote review),
 business: ObjectId (Business being reviewed),
 
 // Metadata
 helpfulCount: Number (helpful votes),
 createdAt: Date,
 updatedAt: Date
}

πŸ” Authentication System

Email Verification (OTP-Based)

Registration Flow:

  1. User submits registration form (username, email, password, role)
  2. System generates 6-digit OTP and sends via Resend email service
  3. User receives email with OTP code
  4. User enters OTP on verification page
  5. System validates OTP and expiry (10 minutes)
  6. Account activated and user redirected to login

Key Features:

  • 10-minute OTP expiry window
  • Resend OTP functionality if needed
  • Email validation before account creation
  • Prevents spam registrations
  • Secure Bcrypt password hashing

OAuth Integration

Google OAuth

  • Configuration: Google Cloud Console
  • Callback URL: http://localhost:3000/auth/google/callback
  • Scopes: profile, email
  • Auto-Filled Data: Name, Email, Profile Picture
  • Account Linking: Automatic email verification

GitHub OAuth

  • Configuration: GitHub Developer Settings
  • Callback URL: http://localhost:3000/auth/github/callback
  • Scopes: user:email
  • Auto-Filled Data: Username, Email, Avatar
  • Account Linking: Automatic email verification

Forgot Password (OTP-Based)

Reset Flow:

  1. User clicks "Forgot Password" on login page
  2. Enters registered email address
  3. System generates 6-digit reset OTP
  4. OTP sent via email (15-minute expiry)
  5. User enters OTP and new password
  6. System validates OTP and password strength
  7. Password updated securely
  8. User can login with new password

Security Features:

  • 15-minute OTP expiry
  • Resend reset OTP functionality
  • Password strength validation
  • No direct email links (OTP-based)
  • Secure password hashing

🌐 API Routes

Authentication Routes (/auth)

POST /register - Register new user with email
POST /verify-otp - Verify email with OTP code
POST /resend-otp - Resend OTP to email
GET /login - Display login page
POST /login - Local email/password login
GET /logout - Logout and destroy session
GET /forgot-password - Display forgot password form
POST /forgot-password - Send reset OTP to email
POST /reset-password - Reset password with OTP
POST /resend-reset-otp - Resend reset OTP
GET /auth/google - Redirect to Google OAuth
GET /auth/google/callback - Google OAuth callback handler
GET /auth/github - Redirect to GitHub OAuth
GET /auth/github/callback - GitHub OAuth callback handler

Business Routes (/business)

GET / - Home page with featured businesses
GET /discover - Browse all businesses
GET /show/:id - View business details
GET /new - Create business form
POST /create-business - Create new business listing
GET /edit/:id - Edit business form
PUT /update/:id - Update business information
DELETE /delete/:id - Delete business listing
GET /search - Search businesses by query
GET /business/:id - Business details page

Review Routes

POST /business/:id/reviews - Create review for business
PUT /reviews/:id - Edit review
DELETE /reviews/:id - Delete review
GET /reviews/:id - View review details

User Routes

GET /dashboard - User dashboard
GET /profile - User profile page
PUT /profile/update - Update user profile
GET /favorites - View saved businesses
POST /favorites/:id - Save business to favorites
DELETE /favorites/:id - Remove from favorites

Messaging Routes

GET /messages - View all message threads
GET /messages/:id - View specific conversation
POST /messages/:id/send - Send message to business
GET /unread-count - Get unread message count

βš™οΈ Environment Configuration

Required Environment Variables

# ==========================================
# DATABASE CONFIGURATION
# ==========================================
DB_URL=mongodb+srv://username:password@cluster.mongodb.net/findify_db
# ==========================================
# AUTHENTICATION - GOOGLE OAUTH
# ==========================================
GOOGLE_CLIENT_ID=your_google_client_id_here.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=your_google_client_secret_here
# ==========================================
# AUTHENTICATION - GITHUB OAUTH
# ==========================================
GITHUB_CLIENT_ID=your_github_client_id_here
GITHUB_CLIENT_SECRET=your_github_client_secret_here
# ==========================================
# EMAIL SERVICE (RESEND)
# ==========================================
RESEND_API_KEY=re_your_resend_api_key_here
# ==========================================
# IMAGE STORAGE (CLOUDINARY)
# ==========================================
CLOUD_NAME=your_cloudinary_cloud_name
CLOUD_API_KEY=your_cloudinary_api_key
CLOUD_API_SECRET=your_cloudinary_api_secret
# ==========================================
# MAPS & GEOLOCATION (MAPBOX)
# ==========================================
MAP_ACCESS_TOKEN=pk.your_mapbox_access_token_here
# ==========================================
# PAYMENT PROCESSING (RAZORPAY) - OPTIONAL
# ==========================================
RAZORPAY_KEY_ID=your_razorpay_key_id_here
RAZORPAY_KEY_SECRET=your_razorpay_key_secret_here
# ==========================================
# CHATBOT (OPENAI) - OPTIONAL
# ==========================================
CHATBOT=sk-proj-your_openai_api_key_here

🎨 UI/UX Improvements

Enhanced Business Cards

  • Hover Effects: Cards lift with smooth Y-axis translation
  • Image Animation: 10% zoom with shimmer effect on hover
  • Icon Animation: Color change to brand purple (#667eea)
  • Text Transitions: Smooth fade-in animations
  • Shadow Depth: Multi-layered shadows for 3D effect

Improved Search Bar

  • Glass-morphism: Modern backdrop blur effect
  • Focus States: Purple glow on input focus
  • Button Animation: Shine sweep effect on hover
  • Responsive Layout: Stacks on mobile
  • Smooth Transitions: Cubic-bezier easing

Advanced Animations

  • Cubic-bezier Easing: Natural, smooth motion curves
  • Page Load: Fade-in transition on page entry
  • Icon Pulse: Subtle scale animation
  • Button Ripple: Click feedback effect
  • 60 FPS Performance: GPU-accelerated transforms

Responsive Design

  • Mobile Optimization: Touch-friendly sizes
  • Adaptive Cards: Reduced hover effects on mobile
  • Flexible Layout: Works on all screen sizes
  • Image Optimization: Responsive image scaling
  • Performance: Optimized for slow networks

πŸ“¦ Installation & Setup

Prerequisites

  • Node.js v22.13.1 or higher
  • npm (comes with Node.js)
  • MongoDB Atlas account (or local MongoDB)
  • Git for version control

Step 1: Clone Repository

git clone https://github.com/aryaan022/Local-Business-Finder.git
cd "Local Business Finder"

Step 2: Install Dependencies

npm install

Step 3: Create Environment File

# Create .env file in root directory
cp .env.example .env

Step 4: Configure Environment Variables

Edit .env with your credentials (see Environment Configuration above)

Step 5: Obtain API Credentials

Google OAuth:

  1. Go to Google Cloud Console
  2. Create new project
  3. Enable Google+ API
  4. Create OAuth 2.0 credentials (Web application)
  5. Add redirect URI: http://localhost:3000/auth/google/callback
  6. Copy Client ID & Secret to .env

GitHub OAuth:

  1. Visit GitHub Developer Settings
  2. Click "New OAuth App"
  3. Set Authorization callback URL: http://localhost:3000/auth/github/callback
  4. Copy Client ID & Secret to .env

Resend Email:

  1. Sign up at Resend.com
  2. Verify domain
  3. Generate API key
  4. Add to .env

Mapbox:

  1. Create account at Mapbox
  2. Get access token from dashboard
  3. Add to .env

Cloudinary:

  1. Sign up at Cloudinary
  2. Get API credentials
  3. Add to .env

Step 6: Run Application

# Development with Nodemon (auto-reload)
nodemon app.js
# Or directly with Node
node app.js
# Application available at http://localhost:3000

🎯 UI/UX Features Implemented

Professional Animations

βœ… Smooth hover effects on cards
βœ… Image zoom and shimmer on hover
βœ… Button shine animation
βœ… Icon pulse effects
βœ… Page load fade-in
βœ… Cubic-bezier easing
βœ… GPU-accelerated animations

Responsive Design

βœ… Mobile-first approach
βœ… Touch-friendly interface
βœ… Adaptive card scaling
βœ… Flexible grid layouts
βœ… Optimized images

User Feedback

βœ… Focus states with glow effect
βœ… Hover state changes
βœ… Button ripple effect
βœ… Loading animations
βœ… Smooth transitions


πŸš€ Deployment

Development Start

nodemon app.js

Production Build

NODE_ENV=production node app.js

Hosting Options

  • Heroku: Simple Git push deployment
  • DigitalOcean: VPS with Node.js
  • AWS: EC2 instances with load balancing
  • Vercel: Serverless functions
  • Railway: Modern deployment platform

πŸ“ Contributing

How to Contribute

  1. Fork the repository
  2. Create feature branch: git checkout -b feature/amazing-feature
  3. Make changes and test thoroughly
  4. Commit: git commit -m "feat: add amazing feature"
  5. Push: git push origin feature/amazing-feature
  6. Open Pull Request

Code Standards

  • Follow existing code style
  • Add meaningful comments
  • Test new features
  • Update documentation
  • Use descriptive commit messages

πŸ“„ License

MIT License - See LICENSE file for details.

Permission is granted to use, modify, and distribute this software freely.


πŸ“§ Contact & Support

Developer: Aryaan
GitHub: @aryaan022
Project: Local Business Finder

For issues and feature requests: GitHub Issues


Made with ❀️ for Local Communities

⭐ If this project helped you, please give it a star!

Last Updated: December 19, 2025
Version: 2.0 (Production Ready)

About

Findify is a repository which allows local vendors to register their businesses on Our Website and user can find the nearby businesses from their location.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /