Skip to content

rupeshbisen/birdIdentification

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🐦 Automated Bird Species Identification

Next.js React TypeScript MongoDB Tailwind CSS Firebase

An intelligent web application that automatically identifies bird species using audio signal processing and neural network technology. Upload bird audio recordings and get instant species identification with visual and audio references.

✨ Features

  • 🎡 Audio-based Bird Identification: Upload bird audio files for species recognition
  • πŸ” User Authentication: Secure login/register system with JWT tokens
  • πŸ–ΌοΈ Visual References: Display bird images alongside audio identification
  • 🎧 Audio Playback: Built-in audio player for reference sounds
  • πŸ“± Responsive Design: Mobile-friendly interface with Tailwind CSS
  • ⚑ Real-time Processing: Fast identification with loading indicators
  • πŸ”” Toast Notifications: User-friendly feedback system

πŸ› οΈ Tech Stack

Frontend

Next.js React TypeScript Tailwind CSS

Backend & Database

MongoDB Mongoose Firebase

Authentication & Security

JWT bcrypt

UI & UX

FontAwesome Headless UI React Toastify

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • npm or yarn
  • MongoDB database
  • Firebase account (optional)

Installation

  1. Clone the repository

    git clone https://github.com/rupeshbisen/birdIdentification.git
    cd birdIdentification
  2. Install dependencies

    npm install
    # or
    yarn install
  3. Environment Setup

    cp .env.sample .env.local

    Fill in your environment variables:

    MONGODB_URI=your_mongodb_connection_string
    JWT_SECRET=your_jwt_secret
    FIREBASE_CONFIG=your_firebase_config
  4. Run the development server

    npm run dev
    # or
    yarn dev
  5. Open your browser Navigate to http://localhost:3000

πŸ“ Project Structure

src/
β”œβ”€β”€ app/                    # Next.js 14 App Router
β”‚   β”œβ”€β”€ api/               # API routes
β”‚   β”‚   β”œβ”€β”€ all-products/  # Bird identification endpoint
β”‚   β”‚   β”œβ”€β”€ login/         # Authentication
β”‚   β”‚   └── register/      # User registration
β”‚   β”œβ”€β”€ login/             # Login page
β”‚   β”œβ”€β”€ register/          # Registration page
β”‚   └── page.tsx           # Home page
β”œβ”€β”€ components/            # Reusable UI components
β”‚   β”œβ”€β”€ formElements/      # Form components
β”‚   β”œβ”€β”€ loader/           # Loading components
β”‚   β”œβ”€β”€ Navbar.tsx        # Navigation component
β”‚   └── Notification.tsx  # Toast notifications
β”œβ”€β”€ context/              # React Context for state management
β”œβ”€β”€ database/             # MongoDB connection
β”œβ”€β”€ middleware/           # Authentication middleware
β”œβ”€β”€ models/               # Mongoose schemas
β”‚   β”œβ”€β”€ bird.model.tsx    # Bird data model
β”‚   └── user.model.tsx    # User data model
β”œβ”€β”€ service/              # API service functions
β”œβ”€β”€ types/                # TypeScript type definitions
└── utils/                # Utility functions

🎯 Usage

  1. Register/Login: Create an account or sign in to access the identification features
  2. Upload Audio: Select a bird audio file (supported formats: .mp3, .wav, .mpeg)
  3. Identify: Click "Predict" to analyze the audio and identify the bird species
  4. View Results: See the identified bird species with image and reference audio
  5. Listen: Use the built-in audio player to compare sounds

🀝 Contributing

We welcome contributions from the community! Here's how you can help:

Ways to Contribute

  • πŸ› Bug Reports: Found a bug? Open an issue
  • πŸ’‘ Feature Requests: Have an idea? Suggest a feature
  • πŸ“ Documentation: Help improve our docs
  • πŸ§ͺ Testing: Add tests or improve existing ones
  • 🎨 UI/UX: Enhance the user interface and experience

Development Workflow

  1. Fork the repository

    git fork https://github.com/rupeshbisen/birdIdentification.git
  2. Create a feature branch

    git checkout -b feature/amazing-feature
  3. Make your changes

    • Follow the existing code style
    • Add tests for new features
    • Update documentation as needed
  4. Test your changes

    npm run lint
    npm run build
  5. Commit your changes

    git commit -m "feat: add amazing feature"
  6. Push to your branch

    git push origin feature/amazing-feature
  7. Open a Pull Request

    • Provide a clear description of your changes
    • Link any related issues
    • Add screenshots for UI changes

Code Style Guidelines

  • Use TypeScript for type safety
  • Follow ESLint configuration
  • Use meaningful variable and function names
  • Add comments for complex logic
  • Keep components small and focused
  • Use Tailwind CSS for styling

Commit Convention

We follow Conventional Commits:

  • feat: New features
  • fix: Bug fixes
  • docs: Documentation changes
  • style: Code style changes
  • refactor: Code refactoring
  • test: Adding or updating tests
  • chore: Maintenance tasks

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Bird audio samples and images from various ornithology databases
  • Neural network models for audio signal processing
  • Open source community for amazing tools and libraries

πŸ“ž Support


Made with ❀️ by Rupesh Bisen

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published