A comprehensive pet care tracking application built with Next.js, TypeScript, Redux, Python FastAPI, and PostgreSQL.
- 🐾 Multi-Pet Support: Track multiple pets with individual profiles
- 📝 Digital Journal: Rich text journal entries with media attachments
- ⚡ One-Tap Logging: Quick logging for common activities (feeding, walks, medication, etc.)
- 📊 Health Trends: Visualize weight trends, medication adherence, and symptom patterns
- 🔔 Smart Reminders: Custom reminders for feeding times, vet appointments, and more
- 📤 Export & Share: Generate comprehensive reports for veterinarians
- 🤖 AI Insights: OpenAI-powered health summaries and care recommendations
- 👥 Social Features: Connect with other pet owners and share experiences
- 📱 Mobile Friendly: Responsive design that works on all devices
- 🔐 Secure Authentication: Google OAuth authentication
- Next.js 14 with App Router
- TypeScript for type safety
- Redux Toolkit for state management
- Tailwind CSS for styling
- Framer Motion for animations
- Prisma for database ORM
- Lucide React for icons
- Python FastAPI for API server
- PostgreSQL for database
- SQLAlchemy for ORM
- Alembic for migrations
- JWT for authentication
- OpenAI API for AI features
- Node.js 18+ and npm
- Python 3.8+
- PostgreSQL 12+
- Git
-
Clone the repository
git clone <repository-url> cd critter-app
-
Install dependencies
npm install
-
Set up environment variables Create a
.env.localfile in the root directory:DATABASE_URL="postgresql://crittr_user:crittr_password@localhost:5432/crittr" NEXTAUTH_URL="http://localhost:3000" NEXTAUTH_SECRET="your-nextauth-secret-key" SMTP_HOST="smtp.gmail.com" SMTP_PORT="587" SMTP_USERNAME="your-email@gmail.com" SMTP_PASSWORD="your-app-password" SMTP_FROM_EMAIL="noreply@crittr.app" OPENAI_API_KEY="your-openai-api-key" NEXT_PUBLIC_API_URL="http://localhost:8000"
-
Set up the database
npx prisma generate npx prisma db push
-
Start the development server
npm run dev
-
Start the database
cd ../critter-app-BE docker-compose up postgres -
Start the backend (in a new terminal)
cd ../critter-app-BE source venv/bin/activate uvicorn main:app --reload --host 0.0.0.0 --port 8000
-
Start the frontend (in a new terminal)
cd critter-app npm run dev
-
Navigate to backend directory
cd ../critter-app-BE -
Start development environment with Docker
./manage.sh dev-start
This will:
- Build the Docker image
- Start PostgreSQL database
- Start Redis (optional)
- Start the FastAPI backend
- Create all necessary database tables
-
Access the API
- API: http://localhost:8000
- API Documentation: http://localhost:8000/docs
- Database: localhost:5432
- Redis: localhost:6379
-
Navigate to backend directory
cd ../critter-app-BE -
Create virtual environment
python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Set up environment variables Create a
.envfile in the backend directory:DATABASE_URL=postgresql://crittr_user:crittr_password@localhost:5432/crittr SECRET_KEY=your-secret-key-here ALGORITHM=HS256 ACCESS_TOKEN_EXPIRE_MINUTES=30 SMTP_HOST=smtp.gmail.com SMTP_PORT=587 SMTP_USERNAME=your-email@gmail.com SMTP_PASSWORD=your-app-password SMTP_FROM_EMAIL=noreply@crittr.app OPENAI_API_KEY=your-openai-api-key FRONTEND_URL=http://localhost:3000 ENVIRONMENT=development
-
Start the backend server
python main.py
critter-app/
├── critter-app/ # Next.js frontend
│ ├── src/
│ │ ├── app/ # Next.js app directory
│ │ ├── components/ # React components
│ │ ├── features/ # Redux slices
│ │ └── lib/ # Utilities and configurations
│ ├── prisma/ # Database schema
│ └── public/ # Static assets
└── critter-app-BE/ # Python FastAPI backend
├── main.py # Main FastAPI application
├── requirements.txt # Python dependencies
├── docker-compose.yml # Docker configuration
└── .env.example # Environment variables template
- Google OAuth authentication
- JWT tokens for session management
- Admin role support
- Create and manage multiple pet profiles
- Track species, breed, weight, and other details
- Upload pet avatars
- Rich text journal entries
- Multiple entry types (feeding, health, training, etc.)
- Media attachments (photos/videos)
- Tagging system
- Search functionality
- One-tap logging for common activities
- Predefined activity types
- Quick notes and timestamps
- Weight tracking charts
- Medication adherence percentages
- Symptom frequency analysis
- AI-powered health insights
- CSV export for vet visits
- Date range filtering
- Comprehensive health reports
- Social sharing features
- Connect your GitHub repository to Vercel
- Set environment variables in Vercel dashboard
- Deploy automatically on push to main branch
cd ../critter-app-BE
cp env.example .env
# Update .env with production values
./manage.sh prod-startRailway
- Connect your GitHub repository
- Set environment variables in Railway dashboard
- Railway will automatically detect and deploy the Docker container
DigitalOcean App Platform
- Create a new app
- Connect your repository
- Configure environment variables
- Deploy with Docker
AWS ECS/Fargate
- Push Docker image to ECR
- Create ECS service
- Configure environment variables
- Deploy container
Railway/Heroku
- Create a new project on Railway or Heroku
- Connect your GitHub repository
- Set environment variables
- Deploy the backend service
- Create a PostgreSQL database on Supabase or Neon
- Update DATABASE_URL in environment variables
- Run migrations:
npx prisma db push
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Commit your changes:
git commit -m 'Add feature' - Push to the branch:
git push origin feature-name - Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For support, email support@crittr.app or join our Discord community.
- Mobile app (React Native)
- Veterinary integration
- Pet insurance integration
- Advanced AI health predictions
- Community features
- Multi-language support