A small logistics provider needs a fast and efficient way to determine the best cross-border shipping route using air, sea, land, or their combinations. Our tool analyzes shipment details and suggests optimal routes based on:
Cost
Transit Time
Feasibility
Emissions
Or A Mix Of Them
Rerouting according to the current situation of path
AI powered 72 hours pre-predection Alert
use vendor method for small shipment during disaster
🚀 Challenges We Faced in the Project
- Environment Variable Management 🔑
Challenge: Sensitive keys like CLERK_SECRET_KEY and GEMINI_API_KEY might accidentally get exposed.
Solution: Use .gitignore to exclude .env files and tools like dotenv to load them securely.
- API Key Mismanagement 🗝️
Challenge: Unused or unnecessary API keys (e.g., GEMINI_API_KEY) can clutter the .env file.
Solution: Regularly audit and remove unused keys to keep things clean.
- Frontend and Backend Integration 🔗
Challenge: Ensuring smooth communication between the frontend and backend, especially with authentication services like Clerk.
Solution: Test API endpoints thoroughly and configure public/secret keys properly.
- Security Concerns 🔒
Challenge: Exposing sensitive keys in the frontend (e.g., NEXT_PUBLIC_GEMINI_API_KEY) can lead to vulnerabilities.
Solution: Only expose safe keys publicly and keep sensitive ones on the server side.
- Third-Party Service Dependencies 🌐
Challenge: Relying on services like Clerk or Gemini can cause issues if their APIs change or experience downtime.
Solution: Implement fallback mechanisms and monitor service status regularly.
- Version Control Issues 🛠️
Challenge: Accidentally committing sensitive information to a public repository.
Solution: Use tools like git-secrets to prevent committing sensitive data.
- Deployment Challenges 🚢
Challenge: Ensuring environment variables are correctly configured in production.
Solution: Use deployment platforms like Vercel or Netlify, which support environment variable management.
- Scalability 📈
Challenge: Managing multiple environment variables for different environments (development, staging, production) can get complex.
Solution: Use environment-specific .env files (e.g., .env.development, .env.production) and a configuration library.