Inspiration

We have all seen areas where essential services like hospitals, banks, and ATMs are missing, even though the demand is obvious. Meanwhile, businesses hesitate to expand because they lack data-driven insights on where their services are truly needed.

We thought: What if the community could directly influence where infrastructure gets built? That is how CrowdInfra was born, a platform where people can pin locations, upvote the services they need, and help businesses make smarter decisions.

What it does

In many developing and underserved regions, essential services like hospitals, banks, canteens, and ATMs are either missing or poorly located, not because there's no need—but because there's no structured way to voice that need.

Businesses, investors, and policymakers often rely on outdated reports, guesswork, or incomplete surveys when making infrastructure decisions. This leads to:

  • Underdeveloped areas being ignored
  • Poor investment choices due to lack of ground-level demand data
  • Frustrated communities that wait years for basic amenities
  • Wasted land and resources with no channel to connect demand with opportunity

How we built it

We formed a team of 4, coordinated through GitHub and used the following tech-stack:

  • Frontend: Next.js: Delivers a blazing-fast, SEO-friendly, interactive user interface.
  • Backend: Node.js & Express: Efficiently handles API requests and website logic.
  • Database: MongoDB: Scalable and flexible for storing community demand data, property listings, and more.
  • Mapping: Google Maps API: Visualizes demand hotspots and infrastructure gaps with interactive maps.
  • AI Analysis: Google Gemini API: Provides deep, real-time insights on market competition, profitability, and resource availability.

Challenges we ran into

Building CrowdInfra came with several real-world dev challenges that shaped our learning.

  1. Cookie Auth & CORS Issues Problem: Cookies for auth caused CORS errors due to frontend and backend being on different origins. Fix: Set credentials: 'include' in fetch. Allowed credentials via CORS headers: Access-Control-Allow-Origin and Access-Control-Allow-Credentials. Ensured cookies weren’t HttpOnly when JS access was needed.

  2. Upvote System Bugs Problem: Double votes or no update. Fix: Unique DB constraint on votes. Atomic DB operations. Optimistic UI updates with rollback.

  3. Schema Design Problem: Unnormalized MongoDB schema made data retrieval tricky. Fix: Refactored schema. Used references + .populate(). Added helpers for consistency.

  4. Nearby Location Mapping Problem: Mapping demands based on user location. Fix: Google Maps API + MongoDB 2dsphere index for geospatial queries.

  5. Routing Errors Problem: Dynamic routes broke after build. Fix: Used Next.js dynamic routing properly. Handled slugs + fallback rendering.

  6. Git Conflicts Problem: Merge conflicts from parallel development. Fix: Branching strategy (feature/, bugfix/). Frequent small PRs + GitHub Projects for coordination.

What's next for CrowdInfra

  • Radius Selection: Map demand over broader areas, not just points.
  • Smarter AI: Optimize Gemini API for faster, sharper insights.
  • Trusted Data: Integrate reliable datasets for accurate analysis.
  • UI/UX Boost: Smoother, more intuitive user experience.
  • Scale & Secure: Build and grow with security.
  • Local Suggestions: Recommend businesses based on real demand.
  • Smart Property Matches: Suggest listings in high-demand zones.
  • Data Validation: Ongoing spam protection for quality input.

Built With

Share this project:

Updates