██████╗ ██╗ ██╗ ██╗
██╔════╝ ██║ ██║ ██║ ██████╗
██║ ██║ ██║ ██║ ██╔════╝
██║ ╚██╗ ██╔╝ ██║ ██║
╚██████╗ ╚████╔╝ ██║ ╚██████╗
╚═════╝ ╚═══╝ ╚═╝ ╚═════╝
The first web-based end-to-end application dedicated to coastal vulnerability assessement
- 🌐 Live Application
- 🚀 Installation
- 📖 Usage
- ✨ Features
- 🔧 Technology Stack
- 🤝 Contributing
- 📄 License
- 📚 Citation
- 📧 Contact
🔗 Live Application (v0.1.0): https://alexandrosliaskos.github.io/CVIc/
node >= 16.0.0
npm >= 8.0.0# Clone the repository
git clone https://github.com/alexandrosliaskos/CVIc.git
cd CVIc
# Install dependencies
npm install
# Start development server
npm run dev# Build optimized production bundle
npm run build
# Preview production build locally
npm run preview- Import/Digitize Shoreline: Upload existing vector data or digitize from satellite imagery
- Configure Segmentation: Set segment length and spacing parameters
- Select CVI Variant: Choose between CVI, RCVI, or ICVI
- Assign Values: Interactive assignment of vulnerability scores (1-5 scale)
- View Results: Analyze results with interactive visualizations
- Export Data: Download as GeoJSON, Shapefile, or HTML report
| Format | Import | Export | Notes |
|---|---|---|---|
| Shapefile | ✅ | ❌ | Zipped .shp files |
| GeoTIFF | ✅ | ❌ | Satellite imagery |
| GeoJSON | ❌ | ✅ | Shoreline data |
| HTML | ❌ | ✅ | Report Export |
- 🗺️ Shoreline Management: Upload existing shoreline data or digitize new shorelines from high-resolution satellite imagery
- 📐 Automated Segmentation: Intelligent division of shorelines into analysis segments with customizable parameters
- 🎯 CVI Selection: Choose from multiple Coastal Vulnerability Index variants:
- CVI (Classical Coastal Vulnerability Index)
- ICVI (Integrated Coastal Vulnerability Index)
- ⚡ Automated Formula Application: Automatic CVI calculation based on selected index type with predefined formulas
- 📊 Interactive Value Assignment: Assign vulnerability scores to shoreline segments through an intuitive interface
- 📈 Advanced Visualization: View results on interactive maps with customizable symbology and statistical analysis
- 💾 Data Export: Export results as GeoJSON, Shapefile, or comprehensive HTML reports
- 🔄 Real-time Processing: Browser-based processing with no server dependencies
- Framework: React 18 with TypeScript
- Build Tool: Vite with SWC
- Styling: Tailwind CSS + PostCSS
- Mapping: Leaflet + React-Leaflet
- Geospatial Processing: Turf.js
- Raster Processing: GeoTIFF.js, GeoRaster
- Shapefile Processing: Shapefile.js for Shapefiles
- Client Storage: IndexedDB (via idb)
{
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"lint": "eslint . --ext ts,tsx",
"type-check": "tsc --noEmit",
"deploy:github": "npm run build && gh-pages -d dist"
}
}We welcome contributions from the developers and scientific community!
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
We follow Conventional Commits:
feat: add new CVI calculation method
fix: resolve IndexedDB version conflict
docs: update API documentation
style: format code with prettier
refactor: improve geospatial processing
test: add unit tests for CVI calculations# Install dependencies
npm install
# Start development server with hot reload
npm run dev
# Run type checking
npm run type-check
# Run linting
npm run lint
### Production Build
npm run build
# Deploy to GitHub Pages
npm run deploy:githubThis project is licensed under the MIT License - see the LICENSE file for details.
If you use CVIc in your research, please cite:
@software{cvic2025,
title={CVIc: Coastal Vulnerability Index Compiler},
author={Liaskos, Alexandros},
year={2025},
url={https://github.com/alexandrosliaskos/CVIc},
note={EO-PERSIST Project}
}Project Lead: Alexandros Liaskos Email: [email protected]