A full-stack web application to help the UTA community locate and interact with campus cats, promoting animal welfare awareness and community engagement.
ACM Create Project | Fall 2025
Directors / Contacts: Tobi and Prajit Viswanadha — DM on Discord
Meowvrick is an interactive platform that features a campus map with real-time cat location tracking, user authentication, and an administrative dashboard for managing cat profiles and user permissions. The application helps students find friendly campus cats for stress relief while promoting responsible interaction with campus wildlife.
- Phase: In Development (Not Yet Deployed)
- Communication: Discord #rocktags
- Open issues: use repo Issues; prefer labels
good first issueandhelp wantedthoughtfully
- Frontend: Next.js 15.5, React, TypeScript, TailwindCSS
- Map Integration: Leaflet.js for interactive campus mapping
- Backend: Next.js API Routes (serverless functions)
- Database: Cloud Firestore with real-time synchronization
- Authentication: Firebase Authentication with role-based access control
- Deployment: Ready for Netlify/Vercel deployment
- 🗺️ Interactive campus map with cat locations and building markers
- 🔐 User authentication with email verification
- 👨💼 Admin dashboard with CRUD operations for cat profiles and user management
- 🎯 Role-based access control (Admin/User permissions)
- 📱 Responsive design for mobile and desktop
- ⚡ Real-time database updates
- 🔄 Dynamic table columns that auto-adapt to Firestore schema
- Node.js 20+
- npm or yarn
- Firebase account with project setup
-
Navigate to the project folder:
cd rocktags -
Create a
.env.localfile in therocktagsdirectory with your Firebase Admin SDK credentials:FIREBASE_ADMIN_PROJECT_ID=your-project-id FIREBASE_ADMIN_CLIENT_EMAIL=your-service-account-email@project.iam.gserviceaccount.com FIREBASE_ADMIN_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----\nYourPrivateKeyHere\n-----END PRIVATE KEY-----\n
Important:
- Do NOT use quotes around the values
- Get these credentials from Firebase Console → Project Settings → Service Accounts → Generate New Private Key
- The private key should include
\nas literal characters (not actual newlines)
# Clone the repository
git clone https://github.com/AlvinalphaLy/rocktagss.git
cd rocktagss/rocktags
# Install dependencies
npm install
# Run development server
npm run devVisit http://localhost:3000 to see the application.
- Use Conventional Commits. Examples:
feat(ui): add dark mode togglefix(api): handle null user_id on logindocs(readme): clarify quickstartchore(deps): bump eslint to v9
- Branch names:
feat/<slug>,fix/<slug>,chore/<slug>,docs/<slug>
- Prefer small, focused PRs
- Use the PR template: include testing steps, screenshots for UI changes, note breaking changes and rollback plan
- Request reviews from maintainers or CODEOWNERS
- Never commit
.envor credentials - Use
.envlocally; keep.env.exampleupdated so others know what is required - For deployments, store secrets in platform settings (not in code)
rocktags/
├── src/
│ ├── app/ # Next.js app directory
│ │ ├── admin/ # Admin dashboard
│ │ ├── api/ # API routes (users, cats, banned)
│ │ ├── components/ # Reusable React components
│ │ ├── main/map/ # Interactive map page
│ │ └── login/ # Authentication pages
│ ├── config/ # Firebase configuration
│ ├── lib/ # Utility functions
│ └── data/ # Data fetching functions
├── public/ # Static assets
├── .env.local # Environment variables (not committed)
└── package.json # Dependencies
ACM Create Team Project
- Directors / Contacts: Tobi and Prajit Viswanadha — DM on Discord
This project is part of ACM Create at UTA.
Contributions are welcome! Please follow the conventional commit format and submit PRs for review.
For questions or support, reach out via Discord #rocktags channel.