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

Rough Roadmap and plans #84

Open
sTiKyt opened this issue May 19, 2024 · 6 comments
Open

Rough Roadmap and plans #84

sTiKyt opened this issue May 19, 2024 · 6 comments

Comments

@sTiKyt
Copy link
Contributor

sTiKyt commented May 19, 2024

Roadmap

Phase 1: Initial Setup

  1. Set Up GitHub Repository

    • Create or update the repository to include a templates folder and a templates.json file.
    • Add contribution guidelines for users to upload their templates and create pull requests.
  2. Design Metadata Structure

    • Define the template.json structure to include multiple download links, hash information, and dependencies.
    • Update the central templates.json registry format accordingly.

Phase 2: Client-Side Script Development

  1. Fetch and Parse Templates

    • Develop a function to fetch and parse the templates.json file from the GitHub repository.
    • Ensure the parsing logic correctly handles the new metadata structure, including dependencies.
  2. Rate Download Sources

    • Implement the rate_sources function to evaluate and rank the download links based on speed and reliability.
  3. Download and Verify Template

    • Develop the download_template function to download the template from the best-rated link and verify its hash.
    • Handle exceptions and retries for unreliable links.
  4. Install Template

    • Implement the install_template function to unpack and install the downloaded template.
    • Check and report any dependencies required by the template.

Phase 3: Integration and Testing

  1. Integrate Client-Side Script

    • Integrate the script into HiddenEye Reborn, ensuring seamless interaction with the existing system.
    • Provide a user interface for selecting and installing templates, displaying dependencies to users.
  2. Testing

    • Conduct thorough testing to verify the functionality, including:
      • Template fetching and parsing
      • Source rating and selection
      • Download and hash verification
      • Template installation
      • Dependency checking
  3. User Feedback

    • Gather feedback from early users to identify any issues or areas for improvement.

Phase 4: Documentation and Deployment

  1. Documentation

    • Document the process for contributing templates, including how to create template.json with dependencies and upload templates.
    • Update the project documentation to include usage instructions for the new template management system.
  2. Deployment

    • Deploy the updated HiddenEye Reborn with the enhanced template management system.
    • Announce the new features and encourage the community to contribute templates.

Phase 5: Maintenance and Improvement

  1. Monitor and Maintain

    • Regularly monitor the repository for new template contributions and updates.
    • Maintain the templates.json registry and ensure it stays up-to-date.
  2. Enhancements

    • Based on user feedback, implement further enhancements and optimizations to the template management system.
    • Consider additional features like user ratings for templates, automated testing of templates, etc.
@sTiKyt
Copy link
Contributor Author

sTiKyt commented May 19, 2024

Example template:

{
  "name": "New Template",
  "version": "1.0.0",
  "author": "Author Name",
  "description": "A new website template with dependencies and multiple architectures.",
  "download_links": [
    "https://example.com/new_template1.zip",
    "https://example.com/new_template2.zip"
  ],
  "hash": "sha256-hash-of-the-template-file",
  "dependencies": {
    "php": ">=7.4",
    "python": ">=3.8"
  },
  "architectures": [
    "x86_64",
    "arm64"
  ]
}

@sTiKyt
Copy link
Contributor Author

sTiKyt commented May 19, 2024

So, as you may have guessed, the plan moving forward is to allow users to re-upload website templates to different mirrors and keep a central repository of those templates for HiddenEye to automatically download from.

This will ensure:

  1. We don't break any third-party licenses, because we don't upload modified website code or code that resembles it to our repository.
  2. Users can have better sources that are geographically closer to them and can maintain the availability of templates by contributing download sources (with hash verification to protect from malicious intent).

@sTiKyt
Copy link
Contributor Author

sTiKyt commented May 19, 2024

The ability to specify dependencies will allow us to warn users when they try to use a template that won't work on their system. For example, if they don't have PHP installed or if tests show architecture incompatibility.

@sTiKyt
Copy link
Contributor Author

sTiKyt commented May 19, 2024

A separate GitHub repository is going to contain those template.json files, where users will be able to freely contribute their links and new templates. This will also allow us to automatically test and verify those links using GitHub Actions CI/CD.

@sTiKyt
Copy link
Contributor Author

sTiKyt commented May 19, 2024

Registry file example:

[
  {
    "name": "New Template",
    "version": "1.0.0",
    "author": "Author Name",
    "description": "A new template with dependencies and multiple architectures.",
    "template_url": "https://github.com/yourusername/yourrepository/templates/new_template/template.json"
  },
  {
    "name": "Another Template",
    "version": "2.1.0",
    "author": "Another Author",
    "description": "Another template example.",
    "template_url": "https://github.com/yourusername/yourrepository/templates/another_template/template.json"
  }
]

@sTiKyt sTiKyt added this to Roadmap May 25, 2024
@sTiKyt sTiKyt moved this to To do in Roadmap May 25, 2024
@sTiKyt
Copy link
Contributor Author

sTiKyt commented Nov 18, 2024

Phase 1 progress:

Created the registry we're going to use for out templates, called it Tabulae

Still want to modify the format to require explicitly stating which version of Tabulae template file is using, to ensure backward compatibility in the future updates

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

No branches or pull requests

1 participant