Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Lens] Make Lens Platform Self-Deployable and Cloud-Agnostic #29

Open
amrit3701 opened this issue Jan 25, 2025 · 4 comments
Open

[Lens] Make Lens Platform Self-Deployable and Cloud-Agnostic #29

amrit3701 opened this issue Jan 25, 2025 · 4 comments

Comments

@amrit3701
Copy link
Member

Proposal

Title: Make Lens Platform Self-Deployable and Cloud-Agnostic

Problem Statement:

  • The Lens platform currently has complex deployment requirements
  • Heavy dependency on Amazon AWS services creates vendor lock-in:
    • S3: Required for CAD file storage and presigned URL generation
    • AWS Lambda: Required for running the FC-Worker (FreeCAD processing)
  • Limited flexibility in deployment options
  • Difficult to set up development and testing environments

Goals:

  1. Create a cloud-agnostic version of the Lens platform that can be:
    • Self-hosted on any infrastructure
    • Easily deployed using container orchestration
    • Run multiple instances on a single machine or cluster
  2. Eliminate direct dependencies on AWS services
  3. Provide a streamlined deployment process
  4. Enable easier development and testing workflows

Technical Architecture Changes:

  1. Container Orchestration with Docker Compose (M, 1 week)

    • Create a unified docker-compose configuration for all components:
      • Frontend (Vue application)
      • Backend (API server)
      • MongoDB database
      • FC-Worker service
      • Redis for message queuing
      • Celery for task management
    • Include environment configuration templates
    • Add health checks and service dependencies
    • Enable volume mapping for persistent storage
  2. Local Storage Service (M, 1 week)

    • Replace AWS S3 with a local storage solution
    • Implement file management APIs
  3. FC-Worker Redesign (L, 2 weeks)

    • Replace AWS Lambda-based processing with scalable local solution:
      • Implement Celery-based task queue system
      • Add Redis for message broker and result backend
      • Create worker pools for parallel processing
    • Features:
      • Progress tracking
  4. Documentation and Deployment Guide (S, 4-5 days)

    • Comprehensive deployment documentation:
      • System requirements
      • Installation steps
      • Configuration options
      • Troubleshooting guide
    • Technical documentation:
      • API documentation (existing Swagger)
      • Database schema and collections

Budget Breakdown:

Task Description Complexity Time Cost (USD)
1 Container Orchestration Medium 1 week 1,500
2 Storage Service Medium 1 week 1,500
3 FC-Worker Redesign Large 2 weeks 3,000
4 Documentation Small 4-5 days 500
Total ~5 weeks 6,500

Future Enhancements:

  1. Platform Customization

    • Configurable feature sets per deployment tier
  2. Version Control Integration

    • Git-based file storage backend
  3. Collaboration Features

    • Real-time 3D model annotations in the web viewer
    • Comment/Review system on models
    • User activity timeline

Success Metrics:

  • Deployment time reduced
  • Zero AWS service dependencies
  • Successful deployment verification on major Linux distributions
  • Complete deployment possible within 30 minutes
  • All existing functionality maintained

Source Code

@yorikvanhavre
Copy link
Member

This looks good to me! Very well planned and the goal seems totally something we want.

@Reqrefusion
Copy link
Member

This is great. Will FreeCAD be a lens copy that works here? Or are we just enough to read the results of development just from somewhere?

I also see you forget the "About You" part. I know you are one of the original developers of Lens, but I believe this should be.

The next questions are about FPA, but I think it needs to be asked. It will be included in the new grant system, or whether it is something related to conditional donation. In the vote here, a question mark ultimately makes the acceptance of the conditional donation seems to have been made in advance. Of course, how to examine this issue in the technical examination is a matter of curiosity.

@amrit3701
Copy link
Member Author

sure @Reqrefusion.

About me

I'm a software engineer passionate about building solutions for CAD development. I have been using FreeCAD for 8 years and currently maintain the FreeCAD-Reinforcement workbench, which I initiated in 2017 as a Google Summer of Code project. I have mentored three Google Summer of Code projects under the FreeCAD organization. I also maintain the official FreeCAD Docker image, which has over 10,000 downloads. Throughout my career, I have developed numerous tools using FreeCAD to solve CAD-related challenges for various industries.

The concept of using FreeCAD as a backend CAD engine for web applications originated during my college days. When I shared this idea with Brad, it evolved from a prototype into LENS, a full-fledged CAD PDM web application. LENS is now open-source, enabling other developers to install and contribute to the project. However, LENS is currently tightly coupled with AWS services, making it challenging to set up development and testing environments. Through this proposal, I aim to simplify LENS installation to a single command process. Adding FreeCAD flavour to LENS would be the next steps after my proposal.

@chennes
Copy link
Member

chennes commented Jan 30, 2025

Thank you for submitting this grant proposal: it fits perfectly into the intended use for the Ondsel Onward fund, so should it be accepted the funds will be sourced from that budget line. This will be reviewed as part of the Q1 2025 grant program, with a submission deadline of 1 March 2025 and a final decision date of 31 March 2025.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants