EnneadTab BIM Data was created to solve the critical challenge of tracking and analyzing Revit project data across multiple projects and teams. Traditional methods of monitoring Revit model health are manual, time-consuming, and lack centralized visibility. As projects grow and teams expand, the need for automated, scalable analytics becomes essential.
This webapp provides a centralized dashboard for:
One of the most important architectural decisions was to store only raw facts in the database, not computed scores. This "facts only" approach provides several key benefits:
The database schema uses a hybrid approach that balances performance with flexibility:
The technology stack was chosen to balance developer experience, performance, and scalability:
With weekly data tracking, the system is designed to handle significant data accumulation over time:
Ensuring clean separation between data storage and presentation logic, allowing for flexible scoring algorithm updates without database migrations.
Solution: Facts-only storage with dynamic scoring calculation in the application layer. Scoring logic is ported from HealthMetric's proven algorithm and can be updated without touching stored data.
Handling growing data volumes from weekly tracking while maintaining performance through efficient pagination and database indexing.
Solution: Comprehensive indexing strategy, pagination on all list endpoints, and efficient query patterns. The hybrid schema design balances normalized metadata for performance with JSONB for flexibility.
Calculating scores on-the-fly from stored facts rather than pre-computing, enabling algorithm improvements without data migration.
Solution: Scoring algorithm ported to TypeScript, calculated dynamically when data is requested. This allows for algorithm updates, A/B testing, and improvements without any database changes.
Ensuring optimal performance and user experience on both mobile and desktop devices.
Solution: Mobile-first responsive design with Tailwind CSS, touch-friendly interfaces, optimized layouts, and full feature set available on desktop. Responsive breakpoints ensure usability across all device sizes.
Minimizing wait times and providing seamless user experience from landing page to dashboard.
Solution: Landing page displays aggregated stats for fast initial load, while dashboard data is pre-loaded in the background. This strategy ensures quick initial render and seamless transition to the dashboard.
The workflow follows a clean, unidirectional data pipeline designed for reliability and scalability:
revit_extractor/) extract health metric data from Revit models and generate JSON files. The extraction process can be integrated with existing Revit automation tools or run as standalone scripts./api/data/ingestendpoint using the scripts/send_to_api.pyscript. The API requires authentication via API key and includes strict data validation, rate limiting (100 requests/minute), and a 10 MB payload limit.EnneadTab BIM Data is designed for internal team use, which influenced several key decisions:
The codebase follows strict modularity principles:
Simplified deployment approach for rapid iteration:
Pragmatic approach to testing and documentation:
EnneadTab BIM Data was developed as a modern, scalable solution for Revit project analytics. Built on Next.js and Vercel Postgres, it represents a fresh start with no backward compatibility requirements, allowing the architecture to be optimized for current needs and future extensibility.
The application follows a "facts only" storage approach, storing raw data in the database and calculating scores dynamically. This design decision was critical for long-term maintainability and flexibility. It allows scoring algorithms to be updated, improved, or even A/B tested without requiring database migrations or data reprocessing.
The scoring algorithm was ported from HealthMetric's proven scoring.py, maintaining the same calculation methodology while adapting it to TypeScript for seamless integration with the Next.js application.
Future enhancements planned include chatbot integration for intelligent insights, file attachments support for PDFs and images, advanced analytics features, and potential integration with additional data sources.