An open-source aggregator for Italian startup funding opportunities ("Bandi").
This project aims to create a definitive, open-source, and perpetually free-to-use platform that serves as the single source of truth for all public funding opportunities relevant to Italian startups. It systematically dismantles the information silos that currently define the landscape by leveraging automated data aggregation and presenting it through a clean, intuitive, and powerful user interface.
The Italian startup ecosystem is supported by a rich and diverse array of public funding opportunities, locally known as bandi. However, the potential of this system is fundamentally undermined by a critical flaw: extreme information fragmentation. Funding opportunities are scattered across a vast and disconnected network of government websites at the national, regional, provincial, and municipal levels.
The Bandi Aggregator solves this problem by:
- Automatically scraping and aggregating funding opportunities from official government sources
- Standardizing the data into a consistent format
- Providing a powerful search and filtering interface
- Offering alerts and bookmarks for personalized tracking
- Unified Search Engine: Find all relevant funding opportunities through a single search interface
- Advanced Filtering System: Filter by:
- Geography (Region, Province, Municipality)
- Status (Open, Closing Soon, Closed)
- Funding Type (Grants, Zero-interest Loans, Tax Credits, Vouchers, etc.)
- Beneficiary Profile (Startup Innovativa, Impresa Giovanile, Impresa Femminile, PMI)
- Industry/Sector
- Standardized Bando Detail Page: Consistent presentation of all funding opportunities with:
- Key Information Box (Issuing Body, Deadline, Funding Amount, Type)
- Concise Summary
- Eligibility Checklist
- Eligible Expenses List
- Direct Link to Official Source
- User Accounts: Personalization features including:
- Saved Searches
- Bookmarking ("Favorites" or "Watchlist")
- Email Alerts for new matching opportunities
- Data Acquisition: Firecrawl API for robust web scraping
- Database: PostgreSQL
- Frontend & API: Next.js with TypeScript and Tailwind CSS
- Deployment:
- Vercel for Next.js application (frontend + API)
- Render for scraper component (scheduled cron job)
- Node.js (version 14 or higher)
- PostgreSQL
- Firecrawl API key (get one at https://www.firecrawl.dev/)
-
Clone the repository:
git clone https://github.com/cver-me/OpenBandi.git cd bandi-aggregator -
Install dependencies for all components:
npm run install-all
-
Set up environment variables (see DEVELOPMENT.md for detailed instructions)
-
Run the application in development mode:
npm run dev
The scraper component is designed to run on Render with scheduled executions:
- Create a Render account at render.com
- Fork this repository to your GitHub account
- Log in to Render and create a new Web Service
- Connect your GitHub repository
- Set the following environment variables in the Render dashboard:
FIRECRAWL_API_KEY: Your actual Firecrawl API key
- Configure the build command as
npm install - Configure the start command as
node index.js - In the "Advanced" settings, add a cron job with schedule
0 2 * * *(daily at 2 AM UTC) - The scraper will automatically run daily at 2 AM UTC and update the database
The Next.js application serves both the frontend UI and API endpoints:
- Create a Vercel account at vercel.com
- Connect your GitHub repository
- Configure environment variables:
- Database connection details
- Vercel will automatically detect the Next.js application and deploy it
- The application will serve both the frontend and API endpoints
For more detailed development setup instructions, please see DEVELOPMENT.md.
bandi-aggregator/
├── scraper/ # Data acquisition component
│ ├── index.js # Main entry point
│ ├── scraper.js # Scraping logic
│ ├── database.js # Database integration (placeholder)
│ ├── render.yaml # Render deployment configuration
│ └── package.json # Dependencies
├── frontend/ # Next.js frontend application (frontend + API)
│ ├── src/
│ │ ├── app/ # App router pages
│ │ │ ├── page.tsx (Homepage)
│ │ │ ├── bando/[id]/page.tsx (Bando detail page)
│ │ │ ├── layout.tsx (Root layout)
│ │ │ └── globals.css (Global styles)
│ │ └── components/ (Future components)
├── docs/ # Project documentation
├── README.md # This file
├── LICENSE # MIT License
├── CONTRIBUTING.md # Contribution guidelines
└── DEVELOPMENT.md # Development setup guide
We welcome contributions from the community! Please see our Contributing Guidelines for more details on how to get involved.
This project is licensed under the MIT License - see the LICENSE file for details.
- This project was inspired by the need to democratize access to public funding opportunities for Italian startups.
- Thanks to Firecrawl for providing an excellent web scraping API.
- This project follows the principles of open source software development.