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. πβ¨
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
- Why Nmoji?
- Tech Stack
- Local Development
- Building for Production
- Project Structure
- Contributing
- Debugging & Performance
- Contributors
- License
- 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
Prerequisites: Node 18+ and npm
Install and run:
npm install
npm run devThe app will start at http://localhost:3000. Open your browser and begin exploring!
Build for production:
npm run buildPreview production build:
npm run previewLint code:
npm run astro -- --helpClean build artifacts:
npm run cleannmoji/
βββ 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
- 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:
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 GitHubGuidelines:
- Keep commits focused and descriptive
- Test locally with
npm run devbefore pushing - Update documentation if needed
- Add yourself to
Contributors.md - Follow the existing code style
Development mode:
npm run devCheck for TypeScript errors:
npm run astro -- checkBuild and test production bundle:
npm run build
npm run previewPerformance tips:
- See OPTIMIZATION_GUIDE.md for detailed performance tuning
- Use React DevTools to profile components
- Check lighthouse in browser DevTools
We appreciate the contributions of the following individuals:
This project is stronger because of our amazing community! Thank you for contributing! β€οΈ
This project is licensed under the MIT Licenseβsee the MIT-LICENSE.txt file for details.