Yet another package manager.
- Hosted on your own server
- HTTP/HTTPS Protocol
- Serves all type of packages
- Usability as good as functionality
- Minimalistic
Below you will find the idea/definition of the project before it was developed.
Default columns every normal entity has.
| Technical Field Name | Description | Validation |
|---|---|---|
| id | The unique id of the row | required, unique (auto-generated) |
| created | The timestamp of the creation | required |
| changed | The timestamp when the row were changed |
Holds the technical name and description of your package. It also has custom API keys for external access.
| Technical Field Name | Description | Validation |
|---|---|---|
| name | Technical package name | required, unique value (by namespace, where the namespace is the username) |
| description | Package description in Markdown-Format | |
| visibility | Package visibility | required, expects "public" or "private" |
| access_token | In case the package is private the access_token is required to check for updates and download them | required is visibility equals "private" but the value is auto-generated |
| private_token | An access token for external manipulation of the package (creating releases etc) | auto-generated |
The package entity is associated to a user entity using a separate entity (named user_package) to share a package between users. (n packages, n users)
A release basically holds the package version and description. It also provides a "channel" of the release. This can be for example "alpha" or "beta" or similar. The channel entity is described somewhere below.
| Technical Field Name | Description | Validation |
|---|---|---|
| active | Whether the release should be available for update checks. This can be useful when the release is planned but not yet released | |
| version | The release version | required, unique per channel |
| description | The release notes |
The release entity is directly associated to one parent package entity.(1 package, n releases)
A release file contains information about files which are associated to the package. Usually it is one file per platform. Platforms are defined in an extra entity defined somewhere below.
| Technical Field Name | Description | Validation |
|---|---|---|
| filename | The filename used to locate the file in the filesystem | required, must_exists |
| displayName | The original filename displayed for the user | required |
| size | The size of the file | required |
| mime_type | The file mime type | required |
| extension | The file extension |
The file entity is always associated to one release entity (1 release, n files)
A channel defines in which stage the package should be released.
| Technical Field Name | Description | Validation |
|---|---|---|
| name | The technical channel name | required, unique per user |
| short | The shortcut for the channel | |
| default | Whether this channel should be the default channel |
A channel is basically associated to a user since every user should define their own channels. (1 user, n channels)
A platform is used for release files to determine which files should be downloaded per file.
| Technical Field Name | Description | Validation |
|---|---|---|
| name | The technical platform name | required, unique per user |
A platform is basically associated to a user since every user should define their own platforms. (1 user, n platforms)