calinou / godot-asset-library-laravel Goto Github PK
View Code? Open in Web Editor NEWExperimental Godot Asset Library rewrite using the Laravel framework
License: MIT License
Experimental Godot Asset Library rewrite using the Laravel framework
License: MIT License
icon.png
as a raw file from the Git repository hoster)This can be done using Laravel Socialite.
GitLab login could also be added as a stretch goal.
The server should compute the SHA-256 checksum of all version downloads (both if the link is inferred from the version tag or custom). It should then be persisted to the database.
This hash could also be displayed with small text on asset detail pages.
It would be great to mass import assets like Materials and finish in a BlenderKit style search inside godot editor. I mean: be able to let the free asset libraries to add their own free content to the godot library in bulk as a way to promote their services. Some kind of API or something like that...
Your dependency file specified a branch or reference for lorisleiva/laravel-search-string
, but Dependabot couldn't find it at the project's source. Has it been removed?
Your dependency file specified a branch or reference for lorisleiva/laravel-search-string
, but Dependabot couldn't find it at the project's source. Has it been removed?
Your dependency file specified a branch or reference for lorisleiva/laravel-search-string
, but Dependabot couldn't find it at the project's source. Has it been removed?
Assuming my guess as to what this contains is correct:
https://github.com/Calinou/godot-asset-library-laravel/blob/fb3ccd9f69674e94ff8553be8aa46d0a36dc287f/app/Asset.php
the search won't be searching description
field. Probably also worth throwing in category
(I know it'll probably be searchable separately, but including it in free-text search is usually useful)
/**
* The columns that can be searched for using the search string syntax.
*
* @var array
* @see https://github.com/lorisleiva/laravel-search-string#configuring-columns
*/
protected $searchStringColumns = [
'title' => ['searchable' => true],
'blurb' => ['searchable' => true],
'cost' => 'license',
'support_level_id',
'tags' => ['searchable' => true],
'created_at',
'modify_date' => 'updated_at',
'score',
];
```
I'd also probably expect that `support_level_id` to actually be `support_level`, and the `cost` to be `license` - but I'm only basing this on that one file.
Inspired by https://doc.rust-lang.org/cargo/reference/manifest.html#the-badges-section. We can probably reuse the categories as-is, except for Experimental which would be replaced by the Testing support level we already have.
While this is purely declarative, this could help people make better decisions when choosing an asset.
This maintenance statement would be displayed on the web frontend as a notice of the form "According to its author, this asset is actively developed."
I noticed that this project is going forth rather slowly and with the release of Godot 4.0 I was surprised there's still the old asset store being used...
So I am very interested in helping out, even if I'm not sure how much I'm able to (occupied with work).
The problem is I'm not sure where to start.
Is there a roadmap somewhere or a list of features still missing, or a TODO? I noticed there's a "heroes wanted!" label but only one issue using it.
The CONTRIBUTING file is also not helping much...
Thanks in advance!
YouTube videos should be embedded using youtube-nocookie.com
for better privacy and GDPR compliance.
Your dependency file specified a branch or reference for lorisleiva/laravel-search-string
, but Dependabot couldn't find it at the project's source. Has it been removed?
Your dependency file specified a branch or reference for lorisleiva/laravel-search-string
, but Dependabot couldn't find it at the project's source. Has it been removed?
See https://github.com/lorisleiva/laravel-search-string. This could be used to filter the list by author, rating, creation/update date or other criteria.
This must be done to avoid resetting their creation date every time the asset is updated.
Your dependency file specified a branch or reference for lorisleiva/laravel-search-string
, but Dependabot couldn't find it at the project's source. Has it been removed?
I added basic form testing in 42a5d48, but this doesn't actually check whether the asset is actually present in the database (or whether the form is even valid).
I tried doing this, but it seems Laravel kept resetting the database even if I did the assertions in the same method.
I also don't know how to check for the form validation in an HTTP test, as both valid and invalid forms result in a redirection to the same URL when testing.
Not sure if possible, but in the migrations I do not see a field for asset download count? I see the +1/-1 votes but a download count would be a nice to have if feasible.
Your dependency file specified a branch or reference for lorisleiva/laravel-search-string
, but Dependabot couldn't find it at the project's source. Has it been removed?
Your dependency file specified a branch or reference for lorisleiva/laravel-search-string
, but Dependabot couldn't find it at the project's source. Has it been removed?
Sorting by net score can be unreliable, since an asset with 60 upvotes and 30 downvotes will have the same rating as an asset with 30 upvotes and 0 downvotes. We should replace this with a different algorithm for the purposes of sorting.
If we decide to do this, sorting by rating should also be renamed to sorting by popularity.
SteamDB has introduced a custom algorithm that may be easier to integrate than Wilson score, but it may not scale down as well. Most assets on the site will have less than 20 reviews for a while, so we have to take that into account.
See #201 (comment).
I noticed from the database migration files that you're using an upvote/downvote mechanic in the reviews which is then calculated as a score in the asset. However, this doesn't make for a good user experience for either the user or the asset author.
This treats 60 upvotes and 30 downvotes in equal value to 30 upvotes and 0 downvotes which doesn't help the user in making a decision.
Vs.
The second one is easier to determine when given 4 options, much less 400 options.
The above example is borrowed from an answer in stackexchange
The end-users here are developers just like the asset author, they can give informative feedback and a more accurate score
Emails have broken HTML, which means their buttons aren't clickable. I don't know why this is happening.
Before deploying to production, we should either fix it or disable email confirmation temporarily.
Having a Docker image that can be spun up using docker-compose
would make it easier to onboard new contributors. I didn't make one since I have no need for it myself, but help is welcome in adding a Docker setup.
The image should use PHP 7.2 for compatibility with the production setup.
The dark theme should be enabled depending on the user preference. See https://css-tricks.com/dark-modes-with-css/.
We should upgrade to Tailwind 2 3 to benefit from its built-in dark mode support, among other things. I started looking into it in https://github.com/Calinou/godot-asset-library-laravel/tree/update-to-tailwind-2 but I haven't succeeded yet.
Asset uploaders should be able to add tags in a way similar to GitHub topics (e.g. platformer
, input-management
, โฆ). This would it easier for users to discover assets.
To be more effective, tag names would be restricted to a subset of all possible characters (lowercase letters, numbers and dashes only). This will make tag duplications less likely.
We may also want to add autocompletion to the field used to add tags to assets, so that people reuse tags that are already used by other assets.
Environment: MacOSX 10.14
Running the 'yarn' command like mentioned in the readme does not install any dependencies:
godot-asset-library-laravel on master [!?] via โฌข v9.11.2 via ๐ v7.1.32 took 1m 18s
โ yarn
yarn
Commands:
init scaffold a new yarn site
new create new content
build build your site
clean cleans destination folder
serve serve your site with http-server
watch build, serve, and watch for file changes
Options:
--incremental only build files that have changed [boolean] [default: true]
--verbose log out additional log information [boolean]
--version, -v installed version [boolean]
--help Show help [boolean]
'yarn watch' results in
godot-asset-library-laravel on ๎ master [!?] via โฌข v9.11.2 via ๐ v7.1.32 took 2s
โ yarn watch
yarn
/Users/tomwor/.nvm/versions/node/v9.11.2/lib/node_modules/yarn-cli/node_modules/yarnjs/dist/lib/config/index.js:156
throw new Error('_config.yml requires a \'path\' value.');
^
Error: _config.yml requires a 'path' value.
at Config.update (/Users/tomwor/.nvm/versions/node/v9.11.2/lib/node_modules/yarn-cli/node_modules/yarnjs/dist/lib/config/index.js:156:15)
at Config.loadLocal (/Users/tomwor/.nvm/versions/node/v9.11.2/lib/node_modules/yarn-cli/node_modules/yarnjs/dist/lib/config/index.js:143:12)
at Config.setRoot (/Users/tomwor/.nvm/versions/node/v9.11.2/lib/node_modules/yarn-cli/node_modules/yarnjs/dist/lib/config/index.js:127:14)
at Function.create (/Users/tomwor/.nvm/versions/node/v9.11.2/lib/node_modules/yarn-cli/node_modules/yarnjs/dist/lib/config/index.js:227:14)
at exports.default (/Users/tomwor/.nvm/versions/node/v9.11.2/lib/node_modules/yarn-cli/node_modules/yarnjs/dist/bin/serve.js:8:33)
at exports.default (/Users/tomwor/.nvm/versions/node/v9.11.2/lib/node_modules/yarn-cli/node_modules/yarnjs/dist/bin/watch.js:9:23)
at Object.<anonymous> (/Users/tomwor/.nvm/versions/node/v9.11.2/lib/node_modules/yarn-cli/node_modules/yarnjs/dist/bin/index.js:93:5)
at Module._compile (internal/modules/cjs/loader.js:654:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:665:10)
at Module.load (internal/modules/cjs/loader.js:566:32)
at tryModuleLoad (internal/modules/cjs/loader.js:506:12)
at Function.Module._load (internal/modules/cjs/loader.js:498:3)
at Module.require (internal/modules/cjs/loader.js:598:17)
at require (internal/modules/cjs/helpers.js:11:18)
at Object.<anonymous> (/Users/tomwor/.nvm/versions/node/v9.11.2/lib/node_modules/yarn-cli/node_modules/yarnjs/dist/bin/yarn.js:5:1)
at Module._compile (internal/modules/cjs/loader.js:654:30)
yarn is at version '1.4.0'
Add an "Add as favorite" button and a way to list favorite assets for logged in users.
This would only be exposed in the web interface, not in the Godot editor since the editor can't log into the asset library yet. (Implementing login support in the Godot editor is possible, but far from trivial.)
Neither watch
nor watch-poll
seem to detect changes to tailwind css classes.
Adding a new tailwind class such as mb-4
triggers tailwind to rebuild a stylesheet
Adding a new tailwind class such as mb-4
does not trigger a rebuild of the tailwind stylesheet. Have to manually rerun watch
or development
to see the new stylesheets
Your dependency file specified a branch or reference for lorisleiva/laravel-search-string
, but Dependabot couldn't find it at the project's source. Has it been removed?
This can be used by asset uploaders to give more information to users.
Multiple versions could be stored per asset, each with a version identifier, a date and some release notes (with possible Markdown formatting).
We could make old versions downloadable manually via the Web interface, but the editor integration would likely only provide the latest version for simplicity's sake.
We should migrate from Travis CI to GitHub Actions as it provides a more well-integrated UI and faster responses.
I started looking into it in https://github.com/Calinou/godot-asset-library-laravel/tree/switch-to-github-actions but I haven't succeeded yet.
Asset versions should be able to declare a supported version range, rather than a single minor version. Many assets (such as artwork) can work with almost any Godot version out there, or work with several minor versions at the same time (e.g. 3.1 and 3.2).
php-semver could be investigated for this. We should also provide example version strings in the asset submission form, for those unfamiliar with semver strings.
This page would list the user's join date and assets submitted by the user (if any).
Environment: Ubuntu 19.10
Running the step from the readme to seed the database results in an error:
godot-asset-library-laravel git:(master) โ php artisan db:seed
Illuminate\Contracts\Container\BindingResolutionException : Target class [DatabaseSeeder] does not exist.
at /home/tom/Projects/github/tomwor/godot-asset-library-laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php:805
801|
802| try {
803| $reflector = new ReflectionClass($concrete);
804| } catch (ReflectionException $e) {
> 805| throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
806| }
807|
808| // If the type is not instantiable, the developer is attempting to resolve
809| // an abstract type such as an Interface or Abstract Class and there is
Exception trace:
1 ReflectionException::("Class DatabaseSeeder does not exist")
/home/tom/Projects/github/tomwor/godot-asset-library-laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php:803
2 ReflectionClass::__construct("DatabaseSeeder")
/home/tom/Projects/github/tomwor/godot-asset-library-laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php:803
The DatabaseSeeder class is in the autoload file though...
'Cron\\MonthField' => $vendorDir . '/dragonmantank/cron-expression/src/Cron/MonthField.php',
'Database\\Seeds\\DatabaseSeeder' => $baseDir . '/database/seeds/DatabaseSeeder.php',
'Database\\Seeds\\MigrateLegacyDbSeeder' => $baseDir . '/database/seeds/MigrateLegacyDbSeeder.php',
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.