A feature-rich, modern Pokedex application with Team Builder and Battle Arena capabilities, built with the MERN stack (MongoDB, Express, React, Node.js) + Prisma.
- Pokedex: Browse detailed information about Pokemon species, stats, types, and moves with advanced filtering by Generation and Type.
- Team Builder: Create, manage, and save your own custom Pokemon teams with up to 6 members, each with 4 custom moves.
- Apex Arena: Engage in high-stakes 3D battles against AI opponents. The arena features dynamic perspective, speed-based turn logic, and real-time damage feedback.
- Authentication: Secure user accounts with Sign Up, Sign In, and Logout functionality (JWT + bcrypt).
- Responsive Design: Fully responsive UI for Desktop and Mobile.
- Custom Theming: Unique "Pokemon Arena" branding with custom fonts ("Pocket Monk") and a Pokeball vs. Ultra Ball theme toggle for light and dark modes.
- Frontend: React, Vite, TypeScript, Tailwind CSS, Shadcn UI, Framer Motion, Recharts.
- Backend: Node.js, Express.js.
- Database: MongoDB (via Prisma ORM).
- Authentication: JSON Web Tokens (JWT) & bcryptjs.
- Deployment: configured for Render.
Follow these steps to set up the project locally.
- Node.js (v18+ recommended)
- MongoDB Database (local or Atlas connection string)
Clone the repository and install dependencies:
git clone <repository-url>
cd pokedex
npm installCreate a .env file in the root directory:
# Connection string for your MongoDB database
DATABASE_URL="mongodb+srv://<username>:<password>@cluster.mongodb.net/pokedex?retryWrites=true&w=majority"
# Secret key for JWT signing (can be any random string)
SECRET_KEY="your-super-secret-key-change-this"Generate the Prisma client:
npx prisma generate(Optional) Push schema changes if modifying schema.prisma:
npx prisma db pushFor Local Development (you need two terminals):
Terminal 1 (Backend):
npm run server
# Runs on http://localhost:3000Terminal 2 (Frontend):
npm run dev
# Runs on http://localhost:8080 (proxies API calls to port 3000)For Production Test (Simulating deployment):
npm run build
npm start
# Runs the built frontend via the Express server on http://localhost:3000The project is configured for seamless deployment on Render.
- Build Command:
npm install && npm run build - Start Command:
npm start - Environment Variables: set
DATABASE_URLandSECRET_KEYin the Render dashboard.
src/: React frontend source code.prisma/: Database schema and migrations.index.js: Express backend entry point.public/: Static assets (fonts, images).dist/: Production build output.