Shipbuilding ERPNext Project Case Study

Frappe for a Modular and Scalable Shipbuilding Workflow System

Frappe is a Python-based, open-source web application framework recognized for its metadata-driven architecture and rapid development capabilities. It served as a robust foundation for building a modular and scalable system tailored to the complex workflows of the shipbuilding domain. The combination of low-code development, strong customization options, and a user-friendly interface made Frappe a practical choice for a project of this scale.

Data Management

A primary reason for choosing Frappe was its intuitive admin interface, which significantly simplified the creation of DocTypes, data models, and form layouts. Given the evolving nature of shipbuilding processes—where entities like drawings and comment threads frequently change—this flexibility enabled us to iterate quickly without compromising on structure or integrity. Additionally, Frappe’s support for child tables allowed us to effectively manage related data within parent records, which proved especially useful for handling complex relationships like drawing assignments and multi-user comment histories.

Another key advantage was Frappe’s built-in Data Import tool, which played a crucial role in managing large volumes of technical and operational data throughout the project lifecycle. From the early stages of system setup to ongoing updates, the tool allowed us to efficiently upload and map data directly into the system without writing custom scripts. Whether it involved bulk importing drawing records or updating departmental inputs, the import functionality significantly reduced manual effort and minimized errors, making data handling more streamlined and reliable.

SEO and Design Challenges

KSEB already had an Android app. But as technology and user expectations evolved, it became clear that a fresh, accessible, and modern experience was needed.

Our team rebuilt the frontend using React Native, enabling smooth performance across both Android and iOS—a crucial step toward inclusivity and reach. This move alone allowed KSEB to connect with a wider user base, without device limitations.

File Storage and User Permissions

and reliable document handling throughout the application. All project-related files—including PDFs, spreadsheets, Word documents, images, and other common formats—were seamlessly stored and managed using the File DocType. This centralized storage provided authorized users with consistent access to critical documentation while maintaining full traceability through an audit trail of all file interactions. Additionally, file size limits could be configured through system settings, allowing us to balance performance and storage requirements without compromising on the ability to handle large or complex files. This flexibility was especially valuable in a project that demanded frequent file-based collaboration across multiple teams and departments.

Frappe’s role-based permission system played a vital role in maintaining data security and operational clarity within our application. In a multi-stakeholder setup—comprising builders, owners, coordinators, and project managers—each user group required distinct levels of access. The framework allowed us to define specific roles and assign tailored permission sets, controlling exactly what each user could view, modify, or approve. This level of precise access control ensured that responsibilities were clearly defined and permissions were aligned with each user’s role. The system was also easy to configure and adapt, allowing us to manage permissions efficiently as user requirements evolved, all without introducing complexity into the backend.

Modern Frontend with Vue.js and TailwindCSS

While Frappe provides a default UI, we extended the user experience by integrating Vue.js and TailwindCSS for the frontend. This enabled us to deliver a responsive, dynamic, and modern interface that adapted to the specific needs of each user role. Key features—such as project dashboards, the Drawing Comment Form (DCF), and real-time status tracking—were built with Vue, which interacted seamlessly with Frappe’s backend APIs. This hybrid architecture ensured a smooth, consistent user experience without sacrificing backend control or flexibility.

Custom Workflows for Complex Approval Chains

Despite its many strengths, we encountered limitations with Frappe’s Workflow DocType, which could not accommodate the highly dynamic and conditional approval flows required by our project. Approval processes in the shipbuilding domain often change based on department, drawing type, or iteration history. As a result, we implemented custom workflow logic in Python to handle transitions, validations, and role-specific routing. This approach provided the flexibility needed to support real-world complexity and ensure accurate workflow execution.

Report Generation and Formatting

Another area where we needed to go beyond Frappe’s built-in capabilities was data export and reporting. Although the framework provides basic print and export functionalities, they lacked the flexibility and formatting control required to meet the specific expectations of our stakeholders—especially in formal reporting contexts. Our reports often needed to follow predefined templates with precise layout structures, custom fonts, company branding, and hierarchical data presentation. To achieve this, we developed tailored export features using robust Python libraries like openpyxl for Excel reports and python-docx for Word documents. These libraries gave us fine-grained control over every aspect of the output, allowing us to create professional-grade documents with multiple sections, styled headings, dynamic tables, and embedded content. This approach ensured that all technical and administrative reports not only conveyed the necessary information but also adhered to the visual and structural standards demanded by project stakeholders.

Graphical Report Generation

In addition to structured tabular data, our reporting requirements extended to visual analytics, including approval timelines, submission delays, and role-specific performance metrics. To meet these needs, we incorporated two distinct types of visualizations: a line graph to track the progression of approved drawings over time and a polar chart to represent the status distribution of reference drawings across different phases. Since Frappe does not natively support embedding such graphs within exported documents, we used matplotlib to generate high-quality charts tailored to our data. These visuals were then programmatically inserted into Word reports using python-docx, allowing us to produce detailed, data-driven documents that combined quantitative insights with visual clarity—ideal for stakeholder presentations, project reviews, and performance evaluations.

Conclusion

Building a custom shipbuilding workflow system on the Frappe Framework provided a strong foundation for managing complex data structures, document flows, and user roles. Its rapid development capabilities, combined with centralized file management and robust access controls, made it well-suited for our initial development goals. Where native Frappe features fell short—particularly in workflow complexity, report generation, and visual analytics—Python’s ecosystem of libraries enabled us to bridge those gaps effectively.

With Vue.js enhancing the frontend experience and Frappe handling the backend operations, we were able to deliver a complete, scalable solution tailored to the unique demands of the shipbuilding industry. The result is a system that not only meets current operational needs but is also flexible enough to adapt as project requirements evolve.

 

Follow Us

Let’s build digital excellence together

You may also like

Request a quote

Tell us some details about your project, and we will get back to you soon.