Skip to content

mdjameee400/vocaply

Repository files navigation

Vocaply Logo

🎯 Vocaply

Master Your Vocabulary, One Word at a Time

Live Demo Version License

Features β€’ Live Demo β€’ Tech Stack β€’ Getting Started β€’ Structure β€’ Contributing


🌟 Overview

Vocaply is a modern, feature-rich vocabulary learning application designed to help users expand their English vocabulary through personalized daily word selections, progress tracking, and interactive learning experiences. Built with React and Firebase, it offers a seamless, responsive experience across all devices.

React Firebase Vite Tailwind


🌐 Live Demo

Experience Vocaply now! No installation required.

Feature Description
πŸ” Authentication Sign up/Login with Email or Google
πŸ“š Word Learning Daily personalized vocabulary selections
πŸ“Š Progress Tracking Track your learning journey with stats
⭐ Favorites Save words you want to remember
πŸ“± Responsive Works perfectly on mobile, tablet & desktop

✨ Features

🎯 Core Features

Feature Description
Daily Words Get personalized word selections every day
Smart Progress Tracking Visual stats showing your learning journey
Favorites System Star and save words for quick review
Streak Counter Stay motivated with daily learning streaks
Word Details Meanings, examples, and pronunciations

πŸ” Authentication & Security

Feature Description
Email/Password Traditional secure authentication
Google Sign-In One-click Google authentication
Protected Routes Secure access to user-specific data
Firestore Rules Server-side data protection

🎨 User Experience

Feature Description
Modern UI Clean, premium glassmorphism design
Dark Mode Ready Easy on the eyes
Micro-animations Smooth, engaging interactions
Responsive Design Perfect on any screen size

πŸ› οΈ Tech Stack

Frontend

Technology Purpose
React 18 UI Component Library
Vite Build Tool & Dev Server
Tailwind CSS Utility-First Styling
Framer Motion Animations & Transitions
React Router v6 Client-Side Routing
Lucide React Modern Icon Library

Backend & Services

Technology Purpose
Firebase Auth User Authentication
Cloud Firestore NoSQL Database
Firebase Hosting Production Deployment
Cloud Functions Serverless Backend Logic

Development Tools

Tool Purpose
ESLint Code Linting
Prettier Code Formatting
Git Version Control

πŸš€ Getting Started

Prerequisites

Before you begin, ensure you have the following installed:

Requirement Version Check Command
Node.js 18.x or higher node --version
npm 9.x or higher npm --version
Git Latest git --version

Installation

Step 1: Clone the Repository

git clone https://github.com/mdjameee400/vocaply.git
cd vocaply

Step 2: Install Dependencies

npm install

Step 3: Environment Setup

Create your environment file by copying the example:

# Windows (Command Prompt)
copy .env.example .env

# Windows (PowerShell)
Copy-Item .env.example .env

# macOS / Linux
cp .env.example .env

Step 4: Configure Firebase

  1. Go to Firebase Console
  2. Create a new project or use existing one
  3. Enable Authentication (Email/Password & Google)
  4. Create a Firestore Database
  5. Go to Project Settings β†’ General β†’ Your Apps β†’ Web App
  6. Copy the config values to your .env file:
VITE_FIREBASE_API_KEY=your_api_key_here
VITE_FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your-project-id
VITE_FIREBASE_STORAGE_BUCKET=your-project.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
VITE_FIREBASE_APP_ID=your_app_id
VITE_FIREBASE_MEASUREMENT_ID=G-XXXXXXXXXX

Step 5: Run Development Server

npm run dev

πŸŽ‰ Open http://localhost:5173 in your browser!


πŸ“ Project Structure

vocaply/
β”œβ”€β”€ πŸ“‚ public/                    # Static assets
β”‚   β”œβ”€β”€ logo.png                  # App logo
β”‚   └── ...
β”‚
β”œβ”€β”€ πŸ“‚ src/                       # Source code
β”‚   β”œβ”€β”€ πŸ“‚ components/            # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ Dashboard/         # Dashboard-specific components
β”‚   β”‚   β”‚   β”œβ”€β”€ TodaysWords.jsx   # Daily word display
β”‚   β”‚   β”‚   β”œβ”€β”€ WordList.jsx      # Word listing
β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ Layout/            # Layout components
β”‚   β”‚   β”‚   β”œβ”€β”€ Navbar.jsx        # Navigation bar
β”‚   β”‚   β”‚   β”œβ”€β”€ Sidebar.jsx       # Side navigation
β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   └── πŸ“‚ ui/                # Base UI components
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“‚ context/               # React Context providers
β”‚   β”‚   └── AuthContext.jsx       # Authentication state
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“‚ firebase/              # Firebase configuration
β”‚   β”‚   └── config.js             # Firebase initialization
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“‚ hooks/                 # Custom React hooks
β”‚   β”‚   └── useVocabulary.js      # Vocabulary data hook
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“‚ pages/                 # Page components
β”‚   β”‚   β”œβ”€β”€ Home.jsx              # Landing page
β”‚   β”‚   β”œβ”€β”€ Dashboard.jsx         # User dashboard
β”‚   β”‚   β”œβ”€β”€ Login.jsx             # Authentication page
β”‚   β”‚   β”œβ”€β”€ Progress.jsx          # Progress tracking
β”‚   β”‚   └── ...
β”‚   β”‚
β”‚   β”œβ”€β”€ App.jsx                   # Main app component
β”‚   β”œβ”€β”€ main.jsx                  # App entry point
β”‚   └── index.css                 # Global styles
β”‚
β”œβ”€β”€ πŸ“‚ functions/                 # Firebase Cloud Functions
β”‚   └── index.js                  # Serverless functions
β”‚
β”œβ”€β”€ πŸ“„ .env.example               # Environment template
β”œβ”€β”€ πŸ“„ .gitignore                 # Git ignore rules
β”œβ”€β”€ πŸ“„ firebase.json              # Firebase config
β”œβ”€β”€ πŸ“„ firestore.rules            # Database security rules
β”œβ”€β”€ πŸ“„ package.json               # Dependencies
β”œβ”€β”€ πŸ“„ tailwind.config.js         # Tailwind configuration
β”œβ”€β”€ πŸ“„ vite.config.js             # Vite configuration
└── πŸ“„ README.md                  # This file

πŸ“œ Available Scripts

Command Description
npm run dev Start development server at localhost:5173
npm run build Create production build in dist/ folder
npm run preview Preview production build locally
npm run lint Run ESLint for code quality

Firebase Commands

Command Description
firebase login Authenticate with Firebase CLI
firebase deploy Deploy everything (hosting, rules, functions)
firebase deploy --only hosting Deploy only website changes

πŸ’‘ Quick Tip: To update your live link manually, always run npm run build first, then firebase deploy --only hosting.


🌍 Continuous Deployment (CI/CD)

To keep your live link automatically updated every time you push code to GitHub, follow these steps:

1. Initialize Firebase GitHub Action

Run this command in your terminal and follow the prompts:

firebase init hosting:github
  • For "For which GitHub repository?": Enter mdjameee400/vocaply
  • For "Set up a workflow to run a build script before every deploy?": Yes
  • For "What script should be run before every deploy?": npm ci && npm run build
  • For "Set up automatic deployment to your site's live channel when a PR is merged?": Yes
  • For "What is the name of the GitHub branch associated with your site's live channel?": main

2. How it works

Once set up, Firebase will create a file in .github/workflows/. Now, whenever you run:

git add .
git commit -m "Your changes"
git push origin main

GitHub will automatically build your app and deploy it to https://vocaply.web.app/. You don't have to run the deploy command manually anymore!


πŸ” Security

Environment Variables

All sensitive credentials are stored in .env files which are NOT committed to the repository.

File Purpose Git Status
.env Your actual credentials πŸ” Ignored
.env.example Template for others βœ… Committed

Firestore Security Rules

Our database is protected with security rules that ensure:

  • βœ… Users can only access their own data
  • βœ… Authentication is required for all operations
  • βœ… Data validation on write operations
// Example rule structure
match /users/{userId} {
  allow read, write: if request.auth != null && request.auth.uid == userId;
}

🀝 Contributing

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

Step 1: Fork the Repository

Click the "Fork" button at the top right of this page.

Step 2: Clone Your Fork

git clone https://github.com/YOUR_USERNAME/vocaply.git
cd vocaply

Step 3: Create a Branch

git checkout -b feature/your-feature-name

Step 4: Make Changes

Make your changes and test them locally.

Step 5: Commit & Push

git add .
git commit -m "Add: your feature description"
git push origin feature/your-feature-name

Step 6: Open a Pull Request

Go to the original repository and click "New Pull Request".


πŸ“‹ Roadmap

Feature Status
βœ… User Authentication Complete
βœ… Daily Word Selection Complete
βœ… Progress Tracking Complete
βœ… Favorites System Complete
πŸ”„ Chrome Extension In Progress
πŸ“‹ Spaced Repetition Planned
πŸ“‹ AI Word Recommendations Planned
πŸ“‹ Multi-language Support Planned

πŸ› Troubleshooting

Common Issues

❌ "Firebase API Key is missing or invalid"
  1. Check if .env file exists in root directory
  2. Verify all VITE_FIREBASE_* variables have values
  3. Restart the development server: npm run dev
  4. Make sure there are no extra spaces in your .env file
❌ "npm install" fails
  1. Delete node_modules folder and package-lock.json
  2. Clear npm cache: npm cache clean --force
  3. Run npm install again
❌ Page shows blank after login
  1. Check browser console for errors (F12)
  2. Verify Firestore rules are deployed
  3. Check if user document exists in Firestore
❌ Environment variables not working
  1. Variables must start with VITE_ for Vite
  2. Restart dev server after changing .env
  3. Check for typos in variable names

πŸ“„ License

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

MIT License

Copyright (c) 2026 Vocaply

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software...

πŸ‘¨β€πŸ’» Author

MD Jamee

GitHub


πŸ™ Acknowledgments


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

Made with ❀️ for vocabulary learners everywhere

Try Now

About

Quick English learning with Bangla translations

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors