Skip to content

Projects #3

@lieonlion

Description

@lieonlion

Projects

Implementation for the different Projects that will be added/managed with Project Shattered.
These Projects will be the collection of information required to upload files to both CurseForge and Modrinth.

Current implementation Idea

interface Project {
  id: string;
  profile: {
    name: string;
    logo: string;
  };
  upload: {
    cf?: {
      id: number;
      relations: {
        <mod_loader>: [
          {
            id: number;
            type:
              | 'embeddedLibrary'
              | 'incompatible'
              | 'optionalDependency'
              | 'requiredDependency'
              | 'tool';
          }
        ];
      };
    };
    mr?: {
      id: string;
      relations: {
        <mod_loader>: [
          {
            id: string;
            version_id?: string;
            type: 
              | 'required' 
              | 'optional' 
              | 'incompatible' 
              | 'embedded';
          }
        ];
      };
    };
  };
  format: {
    file?: string;
    title?: string;
    changelog?: string;
    version?: string;
  };
}

Creating.

  1. Input a CF and/or MR Upload ID.
    • At least 1 Upload ID is required to continue.
  2. Validate permissions of the Upload ID Projects (if the API Key has permission to upload).
  3. Project Profile editor.
    • Pull from the Site(s) for starting Profile settings.
    • If both Upload IDs are present, option to select from which (site's) data to use.
  4. Project Relations editor.
    • Pull from CurseForge's default relations.
    • Enable/Disable which Mod-Loaders will have default relations.
    • Add/Remove IDs to each Site and Mod-Loader for the Project's default relations.
  5. Project Format editor.
    • File // how the data from the File is split. How it will get the version of the File.
      • e.g. {mod_id}-{version}+{minecraft_version}-{mod_loader}
    • Title // Title format for the uploading Version(s)
      • e.g. {name} {version} + {minecraft_version} {mod_loader}
    • Changelog // Changelog format for the uploading Version(s)
      • e.g. ## {name} {version}\n### Added / Fixes\n\n\n***\n\n{banner}
    • Version (MR) // Version format for the uploading Version(s)
      • e.g. {version}+{minecraft_version}-{mod_loader}
  6. Review & Confirm.
    • Review the different settings the Project has. Show data of the Profile, available Upload IDs, and Formats.
    • Randomly generate the Project ID (similar to like MR).

Editing

  1. The editing page will be very similar to creating, with a similar layout to change the different settings of a Project.

Merging

  1. Any Project with only 1 Upload ID can be merged with another with the other Upload ID.
  2. Select which Project (site) Profile settings to use for the Merged Project.

Splitting

  1. Any Project can be split into 2 new Projects, each with 1 of the Upload IDs respectively.
  2. The 2 new split Projects will be given a new ID, and the original Project will be deleted.

Deleting

  1. Remove a Project and all it's data.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions