Thanks to visit codestin.com
Credit goes to github.com

Skip to content

narainkarthikv/nmoji

Repository files navigation

πŸ”Ž Nmoji

Quick emoji selection and filteringβ€”beautifully designed and optimized

Welcome to Nmoji! A straightforward, high-performance web application for quick emoji search, discovery, and filtering. Whether you need to find the perfect emoji for your message or explore by category, Nmoji makes it fast and fun. πŸ˜‰βœ¨

GitHub issues GitHub forks GitHub stars MIT License Version


🌟 Why Nmoji?

Nmoji is a lightweight, performance-focused project designed to help you discover emojis quickly, learn modern web development, and contribute to a friendly community. Whether you're looking for a specific emoji or exploring what's available, Nmoji provides a smooth, responsive experience.

✨ Key Features:

  • πŸ” Advanced Search β€” Search by emoji name, description, category, tags, and aliases
  • 🏷️ Filter by Category β€” Browse emojis organized by type (smileys, animals, food, etc.)
  • 🎨 Beautiful Design β€” Modern, responsive UI built with React and TailwindCSS
  • πŸŒ“ Dark & Light Themes β€” Toggle between themes with smooth transitions
  • ⚑ High Performance β€” Optimized with code splitting, lazy loading, and asset optimization
  • πŸ“± Fully Responsive β€” Perfect on desktop, tablet, and mobile devices
  • πŸ’‘ Learning Friendly β€” Great codebase for learning Astro, React, and TypeScript
  • πŸ”— Browser Extension β€” Includes a Chrome/Firefox extension for quick access
  • πŸš€ Easy Setup β€” Clone, install, and run in minutes
  • πŸ“š Well Documented β€” Includes optimization guides and deployment docs

πŸ“‘ Table of Contents


πŸ› οΈ Tech Stack

  • Frontend: React (v18) + TypeScript + TailwindCSS
  • Framework: Astro (v5) for static site generation
  • Styling: TailwindCSS with custom theme system
  • Build: Astro with optimized Vite configuration
  • CI/CD: GitHub Actions, Netlify deployment

πŸ’» Local Development

Prerequisites: Node 18+ and npm

Install and run:

npm install
npm run dev

The app will start at http://localhost:3000. Open your browser and begin exploring!

Build for production:

npm run build

Preview production build:

npm run preview

Lint code:

npm run astro -- --help

Clean build artifacts:

npm run clean

πŸ“‚ Project Structure

nmoji/
β”œβ”€β”€ docs/                     # Documentation
β”‚   β”œβ”€β”€ QUICK_START.md       # Getting started guide
β”‚   β”œβ”€β”€ DEPLOYMENT.md        # Deployment instructions
β”‚   β”œβ”€β”€ OPTIMIZATION_GUIDE.md # Performance optimization
β”‚   └── CHANGES_SUMMARY.md    # Recent changes
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ assets/              # Static assets (images, fonts)
β”‚   β”‚   └── images/         # Image files
β”‚   β”œβ”€β”€ components/          # React components
β”‚   β”‚   β”œβ”€β”€ EmojiApp.tsx    # Main application component
β”‚   β”‚   β”œβ”€β”€ EmojiGrid.tsx   # Emoji grid display
β”‚   β”‚   β”œβ”€β”€ EmojiDescription.tsx # Emoji details panel
β”‚   β”‚   β”œβ”€β”€ FilterBar.tsx   # Category & tag filtering
β”‚   β”‚   β”œβ”€β”€ SearchBar.tsx   # Search functionality
β”‚   β”‚   β”œβ”€β”€ Navbar.tsx      # Navigation bar
β”‚   β”‚   β”œβ”€β”€ ThemeToggle.tsx # Dark/light mode toggle
β”‚   β”‚   └── ui/             # Reusable UI components
β”‚   β”‚       β”œβ”€β”€ Button.tsx
β”‚   β”‚       β”œβ”€β”€ ButtonPrimary.tsx
β”‚   β”‚       └── ButtonSecondary.tsx
β”‚   β”œβ”€β”€ layouts/             # Astro page layouts
β”‚   β”‚   β”œβ”€β”€ Layout.astro     # Main layout
β”‚   β”‚   └── AppLayout.astro  # App-specific layout
β”‚   β”œβ”€β”€ pages/               # Astro pages (routes)
β”‚   β”‚   β”œβ”€β”€ index.astro      # Landing page
β”‚   β”‚   └── app.astro        # Application page
β”‚   β”œβ”€β”€ scripts/             # Client-side JavaScript
β”‚   β”‚   β”œβ”€β”€ app.js          # App initialization
β”‚   β”‚   └── main.js         # Core functionality
β”‚   β”œβ”€β”€ styles/              # Global CSS
β”‚   β”‚   β”œβ”€β”€ base.css        # Base styles
β”‚   β”‚   β”œβ”€β”€ main.css        # Main styles
β”‚   β”‚   β”œβ”€β”€ landing.css     # Landing page styles
β”‚   β”‚   β”œβ”€β”€ theme.css       # Theme variables
β”‚   β”‚   β”œβ”€β”€ EmojiApp.css
β”‚   β”‚   β”œβ”€β”€ EmojiGrid.css
β”‚   β”‚   β”œβ”€β”€ FilterBar.css
β”‚   β”‚   β”œβ”€β”€ SearchBar.css
β”‚   β”‚   β”œβ”€β”€ EmojiDescription.css
β”‚   β”‚   └── ThemeToggle.css
β”‚   β”œβ”€β”€ types/               # TypeScript type definitions
β”‚   β”‚   └── emoji.ts        # Emoji type interfaces
β”‚   β”œβ”€β”€ utils/               # Utility functions
β”‚   β”‚   β”œβ”€β”€ emoji.ts        # Emoji search & filter logic
β”‚   β”‚   └── theme.ts        # Theme management utilities
β”‚   β”œβ”€β”€ lib/                 # Library utilities
β”‚   β”‚   └── constants.ts     # App-wide configuration
β”‚   └── env.d.ts             # TypeScript ambient declarations
β”œβ”€β”€ extension/               # Browser extension (Chrome/Firefox)
β”‚   β”œβ”€β”€ manifest.json       # Extension manifest
β”‚   β”œβ”€β”€ NmojiList.json      # Emoji data for extension
β”‚   β”œβ”€β”€ popup.html          # Extension popup UI
β”‚   β”œβ”€β”€ popup.js            # Extension popup logic
β”‚   β”œβ”€β”€ styles.css          # Extension styles
β”‚   └── README.md           # Extension documentation
β”œβ”€β”€ public/                  # Static public assets
β”‚   └── NmojiList.json       # Emoji database
β”œβ”€β”€ astro.config.mjs         # Astro configuration
β”œβ”€β”€ tsconfig.json            # TypeScript configuration
β”œβ”€β”€ tailwind.config.mjs       # TailwindCSS configuration
β”œβ”€β”€ postcss.config.js         # PostCSS configuration
β”œβ”€β”€ package.json             # Project metadata & dependencies
β”œβ”€β”€ Contributors.md          # List of contributors
β”œβ”€β”€ MIT-LICENSE.txt         # MIT License
└── README.md               # This file

πŸš€ What's Implemented

  • Emoji Search Engine β€” Search across emoji names, descriptions, categories, tags, and aliases
  • Smart Filtering β€” Filter by category, tags, or custom criteria
  • Theme System β€” Dark/light mode with localStorage persistence
  • Performance Optimizations β€” Code splitting, lazy loading, asset optimization
  • Responsive Design β€” Mobile-first, adapts to all screen sizes
  • Browser Extension β€” Quick access to emoji picker as a browser extension
  • TypeScript Support β€” Fully typed for better development experience
  • Astro Integration β€” Static site generation with React islands architecture

For detailed implementation info, see:


🀝 Contributing

We welcome contributions from everyone! To contribute to Nmoji, follow these steps:

Standard workflow:

# 1. Fork the repository on GitHub

# 2. Clone your fork
git clone https://github.com/your-username/Nmoji.git
cd Nmoji

# 3. Create a branch for your feature
git switch -c feature/your-feature-name

# 4. Make your changes and test them
npm run dev

# 5. Add yourself to Contributors.md
# Format: -[Username](https://github.com/your-username) **Your contribution**

# 6. Commit with a descriptive message
git add .
git commit -m "feat: add your feature description"

# 7. Push to your fork
git push origin feature/your-feature-name

# 8. Open a Pull Request on GitHub

Guidelines:

  • Keep commits focused and descriptive
  • Test locally with npm run dev before pushing
  • Update documentation if needed
  • Add yourself to Contributors.md
  • Follow the existing code style

πŸ” Debugging & Performance

Development mode:

npm run dev

Check for TypeScript errors:

npm run astro -- check

Build and test production bundle:

npm run build
npm run preview

Performance tips:

  • See OPTIMIZATION_GUIDE.md for detailed performance tuning
  • Use React DevTools to profile components
  • Check lighthouse in browser DevTools

πŸ‘₯ Contributors

We appreciate the contributions of the following individuals:

View all contributors β†’

This project is stronger because of our amazing community! Thank you for contributing! ❀️


πŸ“œ License

This project is licensed under the MIT Licenseβ€”see the MIT-LICENSE.txt file for details.

Contributors 5