BookShelfX is a feature-rich online bookstore application that combines a dynamic shopping experience for users with a robust admin dashboard for managing books and orders. Built with the MERN stack, it uses Firebase for user authentication and JWT for admin authentication, ensuring secure and efficient management. Tailwind CSS adds to the application's responsiveness and aesthetic appeal, while Redux Toolkit and RTK Query power efficient data handling.
Repository: GitHub - BookShelfX
Live Site: BookShelfX on Netlify
Backend Hosted: Vercel
User Authentication (Firebase):
Shopping Experience:
Admin Authentication (JWT):
Dashboard Management:
Frontend:
Backend:
Clone the repository
git clone https://github.com/askhan963/bookShelfX.git
cd bookShelfX
Install dependencies
npm install
Environment Variables
Create a .env
file for backend and frontend configurations.
# MongoDB Connection URI
MONGO_URI=your_mongo_uri_here
# JWT Secret Key
JWT_SECRET_KEY=your_jwt_secret_here
# Firebase Configuration (Frontend)
REACT_APP_FIREBASE_API_KEY=your_firebase_api_key
REACT_APP_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain
REACT_APP_FIREBASE_PROJECT_ID=your_firebase_project_id
REACT_APP_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket
REACT_APP_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id
REACT_APP_FIREBASE_APP_ID=your_firebase_app_id
Run the Application
npm start
npm run server
BookShelfX/
āāā client/ # Frontend code
ā āāā public/ # Public assets
ā āāā src/ # Source files
ā āāā components/ # Reusable components (e.g., Cart, Order, Book)
ā āāā context/ # Firebase Auth context
ā āāā redux/ # Redux state management
ā āāā utils/ # Helper functions (e.g., getBaseUrl)
ā āāā App.js # Main App component
āāā server/ # Backend code
ā āāā controllers/ # Route controllers (e.g., Books, Orders)
ā āāā models/ # Mongoose models
ā āāā routes/ # API routes
ā āāā config/ # Database and middleware configurations
ā āāā index.js # Entry point for the Express server
āāā README.md # Project documentation
Enjoy exploring BookShelfX! Feel free to contribute or reach out if you encounter any issues or have suggestions.