Gridman is a powerful desktop application for grid data editing and management, designed for professional fields such as geographic information systems (GIS), surveying, and geological modeling. The application is built around a core framework that provides comprehensive visualization, editing, and analysis capabilities. The main implementation resides in the framework directory, with an alternative frontend implementation available in the frontend directory.
- Resource Scene Management:
- Advanced scene components for resource visualization and interaction
- Support for various resource types and formats
- Integrated with 3D rendering capabilities
- UI Component Library:
- Comprehensive set of reusable UI components based on shadcn/ui
- Consistent styling and behavior across the application
- Accessibility-focused design patterns
- Tab & Navigation Systems:
- Flexible tabBar for multi-document interface
- Customizable iconBar for tool and function access
- Context-aware navigation components
- Map Visualization:
- Advanced map container with multiple layer support
- Topology and feature visualization capabilities
- Integration with external mapping services
- Settings Architecture:
- Modular settings pages with consistent layout
- Dynamic configuration management
- User preference persistence
- Resource Scenario System:
- Schema and patch management for modeling scenarios
- Topology editing with visual feedback
- Data validation and consistency checks
- Project Management: Supports creating, loading, and managing multiple grid projects.
- Interactive Map: Built with Mapbox GL for smooth map zooming, panning, and data visualization.
- Grid Editing:
- Offers multiple selection modes including Brush, Box Select, and Feature Select.
- Supports topological operations on grids such as Subdivide, Merge, Delete, and Recover.
- Data Checking & Validation: Includes built-in tools to ensure data quality.
- Feature Management: Supports selecting and manipulating grids by importing external features (e.g., GeoJSON).
- Aggregation Workflow: Provides a node-based interface for defining and executing data aggregation processes.
- 3D Visualization: Integrates
3d-tiles-rendererto support 3D tile data visualization.
- Main Framework: Electron
- Frontend Framework: React
- Build Tool: Vite
- Programming Language: TypeScript
- UI & Styling:
- Tailwind CSS: For rapidly building modern interfaces.
- Shadcn/ui (Component Library): Provides high-quality, accessible UI components.
- Lucide React: For clear and consistent icons.
- Mapping & Visualization:
- Mapbox GL JS: High-performance interactive map library.
- React Flow: For building node-based editors.
- State Management: Custom Context API and an event-driven
store.
gridman/
├── electron/ # Electron main process code
├── src/
│ ├── framework/ # Main application framework
│ │ ├── public/ # Static assets and shader files
│ │ │ ├── images/ # Image resources
│ │ │ └── shaders/ # GLSL shader files
│ │ ├── src/
│ │ │ ├── components/# Core UI components
│ │ │ │ ├── resourceScene/
│ │ │ │ ├── tabBar/
│ │ │ │ ├── mapContainer/
│ │ │ │ ├── ui/ # Reusable UI components
│ │ │ │ └── ...
│ │ │ ├── core/ # Core functionality modules
│ │ │ │ ├── apis/ # API interfaces
│ │ │ │ ├── grid/ # Grid processing
│ │ │ │ ├── message/# Messaging system
│ │ │ │ └── ...
│ │ │ ├── resource/ # Resource management
│ │ │ └── store.ts # Framework state management
│ │ └── vite.config.ts # Framework Vite configuration
│ │
│ └── frontend/ # Alternative UI implementation
│ ├── public/ # Frontend static assets
│ ├── src/
│ │ ├── assets/ # Frontend-specific assets
│ │ ├── components/# Frontend UI Components
│ │ │ ├── aggregationPanel/
│ │ │ ├── gridPanel/
│ │ │ └── ...
│ │ ├── core/ # Core business logic (imports from framework)
│ │ └── store.ts # Frontend state management
│ └── vite.config.ts # Frontend Vite configuration
│
├── package.json # Project dependencies and scripts
└── README.md # That's me :)
-
Clone the repository
git clone <your-repository-url> cd gridman
-
Install Dependencies
The project contains dependencies at three levels: root, main framework, and alternative frontend.
# Install root dependencies (mainly for Electron) npm install # Install framework dependencies (main application) cd src/framework npm install # Optionally, install frontend dependencies (alternative implementation) cd ../frontend npm install
-
Run the Application in Development Mode
Return to the project root directory to run the start script.
# Go back to the root directory cd ../.. # Start the application in development mode (uses the framework implementation) npm start
-
Building for Production
# Build the framework (main application) cd src/framework npm run build # Return to root and package the application cd ../.. npm run package
-
Development Workflow
-
Main Application Development: Focus on the framework implementation
cd src/framework npm run dev -
Alternative Frontend Development: Work on the alternative implementation
cd src/frontend npm run dev -
Full Application Development: Run from the project root
npm start
-
- Core Documentation: Create comprehensive API documentation for the framework components
- Resource Scene Enhancement: Add support for additional resource types and formats
- Performance Optimization: Improve rendering speed for complex topologies
- User Interface Improvements: Enhance tab system with dynamic loading/unloading
- Data Persistence: Implement user settings and preferences storage
- Internationalization: Complete i18n support for all UI components
Contributions to Gridman are welcome! Please follow these steps:
- Fork the Repository: Create your own fork of the project
- Create a Feature Branch:
git checkout -b feature/amazing-feature - Make Changes: Implement your changes with appropriate tests
- Commit Changes:
git commit -m 'Add some amazing feature' - Push to Branch:
git push origin feature/amazing-feature - Create Pull Request: Submit a PR with a clear description of your changes
- Follow the existing code style and patterns
- Write tests for new features
- Update documentation for API changes
- Add entries to the changelog for user-facing changes
This project is licensed under the ISC License.