quarkusio / code.quarkus.io Goto Github PK
View Code? Open in Web Editor NEWCode Quarkus - Start coding with Quarkus
Home Page: https://code.quarkus.io
License: Apache License 2.0
Code Quarkus - Start coding with Quarkus
Home Page: https://code.quarkus.io
License: Apache License 2.0
The modules depend on each other so it would be nice that if I select a module all its module dependencies are visible in the "Selected Extensions" area and possibly also in the modules area.
For example, if you select "SmallRye Fault Tolerance" your project will automatically depend on ArC, SmallRye Metrics and SmallRye Context Propagation. No need to add them manually.
The created Zip archive contains additional directory levels, e.g. /src/main/java//org/example//QuarkusApp.java
, or /src/test/java//org/example//QuarkusAppTest.java
.
When the file is unzipped, the directory structures appear to be created correctly. Browsing the archive with an archive manage lookes like we have emtpy directories
Directly plug the application generation in the endpoint.
The Launcher creator
library adds too much complexity for no immediate gain, and it generates some unnecessary extra files (deployment.json). It may become usefull again at some point.
How to deal with interruption/quality of service (notification, procedure, ...).
The "Generate Project" hot key seems hard-coded to ALT RETURN. The Mac does not have an ALT key :-) The hot-key sequence needs to take into account the host operating system and adjust accordingly. On the Mac, it should be COMMAND RETURN. Currently, it maps to OPTION RETURN.
For this we first need an approximation of the audience.
When using the /openapi
endpoint to get the API description, then download
endpoint is listed but the parameters that must be sent in the GET request are not being described
To reproduce, once it's built natively, start, open the browser, choose a few extensions, and generate.
I added this but it's not enough: https://github.com/fabric8-launcher/launcher-quarkus/blob/master/pom.xml#L171, it's still missing some classes.
I didn't manage to make reflection registration work as described in: https://quarkus.io/guides/writing-native-applications-tips#register-reflection
gsmet tmp quarkus-app $ ./mvnw clean package
bash: ./mvnw: Permission denied
We need to use another zip library that support permissions.
Somehow I accidentally scrolled the bottom "extensions" pane to where the entire pane was black. At first I thought there was something wrong (the mac scrollbar disappears when not being used). It would be nice to either disable being able to scroll all contents off the pane or to have some visual cue that the content has scrolled off.
A PR have been submitted:
quarkusio/quarkus#3397
Moved from fabric8-launcher/launcher-application#784
I selected RestEASY JSONB, H2 JDBC, and Hibernate ORM with Panache extensions and downloaded/unzipped code-with-quarkus.zip. The pom.xml did not include the selected dependencies.
It could be useful to support keyboard selection.
If you start typing "hiber" you get four results. Then if you press DOWN you get a cursor over the first result. You can move between results with UP/DOWN. Pressing ENTER over a result will select it. Pressing ESC will clear the search field. Note that you can still keep on typing to narrow the results, so the focus should not leave the text field.
If you start typing "hiber" you get four results. Then if you press ENTER you select all four.
This can wait until after the first release.
For now the file is generated from the common and the quarkusio ones. We need to find a more consistant way of achieving it.
@emmanuelbernard I think we are missing that
Initially found by @stuartwdouglas:
src/main/java/org/example/ClassFile.java you get src/main/java/_/org/example/_/ClassFile.java
${path}
is not replaced with an actual value, so the generated application does not workI am creating this issue in the launcher to keep track of the problem, but I guess it should be treated in https://github.com/quarkusio/quarkus since the project is generated using CreateProject: https://github.com/fabric8-launcher/launcher-quarkus/blob/master/src/main/kotlin/io/launcher/quarkus/LauncherQuarkus.kt#L45
@jkbrock this issue is to discuss, track and achieve UX for the Quarkus Getting Started V1
There is the current design https://fabric8-launcher-frontend-pr-1306-quarkus-app.surge.sh/
It has been requested to not use a modal for the "see all" feature and use something more integrated (like a tab)
Let's discuss how to make this xp as painless as possible for the user.
We have this feature in the Launcher and all the authorization dance is a bit heavy. Let's try to find ideas on another approach to deal with this?
BTW it may be nice to provide an external service whose job is to import zip as a new repository in any git provider (github, bitbucket, gitlab...), I guess many people might like such a service. Any web-app just send the user to this page with a link to the zip ( git-import.io/?zip=http://...my-app.zip
), the user is then directed toward configuring the import..
For third party tools (ex Project Initializer) that will be based only on the API and not the front end, it would be fine if we can get access to the extensions list (extensions.json) through a REST endpoint.
When you select an extension, it may depend on other extensions. It could be nice to display them in another colour.
This can wait until after the first release.
We need to find the most relevant search algo to search extension..
I looked at https://code.quarkus.io/ with iPad mini (2019) and the page looks bizarre. Looking at the same page in landscape mode is ok.
Seems code.quarkus.io expects certain screen width to work properly.
Can be simulated on desktop when the size of windows is reduce.
CI/CD:
Hosting:
It would be cool if you could (next to the Generate button) see what would be the mvn
command to generate the application based on the selections
Unless I am not mistaken, it seems like we can only create projects with the latest version of Quarkus. It would be nice if there was an option to decide which Quarkus version to make a project with. If a specific Quarkus version is selected, the extensions list would also show extensions that are available for that specific Quarkus version.
It would be fantastic if a "version" query parameter could be added to the quarkus/extensions
and quarkus/download
endpoints to facilitate this feature. That would be extremely helpful in our particular use case.
The project bootstrap allows to add any extension and shows the related maven command.
However, one may wonder how they can edit their choice later / remove extensions, especially when adding extensions goes through an opaque mvn command rather than simple pom edition (even if in the end it's just pom edition, it's still opaque).
So, is there an equivalent command such as ./mvnw quarkus:remove-extension -Dextensions="..."
? ; if so, maybe it should be noted somewhere on the bootstrap page?
All the guides are relying on the fact that mvnw
is in the project. We need to have a consistant story for the user.
Right now, the right part behaves like this:
I would lean towards the following behavior:
We should follow the order of the current Extensions page: https://quarkus.io/extensions/ .
Some extensions require properties be set in order to operate properly. This is true for JPA/JDBC.
For H2, identified by the inclusion of the quarkus-jdbc-h2 extension, the following properties should be automatically generated in the application.properties file. These can be hard-coded or even as a pre-filled-in property list on the UI that a user can override (much like the GAVs are already):
%dev.quarkus.datasource.url=jdbc:h2:mem:test
%dev.quarkus.datasource.driver=org.h2.Driver
%dev.quarkus.hibernate-orm.database.generation=drop-and-create
%dev.quarkus.hibernate-orm.log-sql=true
For PostgreSQL, identified by the inclusion of the quarkus-jdbc-postgres extension, the following properties should be automatically generated in the application.properties file:
# Please provide hostname, port, database name, username, and password
%dev.quarkus.datasource.driver: org.postgresql.Driver
%dev.quarkus.datasource.url: jdbc:postgresql://<hostname>:<port>/<database>
%dev.quarkus.datasource.username: <username>
%dev.quarkus.datasource.password: <password>
# Uncomment the following line to generate the database schema
#%dev.quarkus.hibernate-orm.database.generation=drop-and-create
%dev.quarkus.hibernate-orm.log-sql=true
Note, this feature could potentially be added to the quarkus:add-extension goal as this property-generation feature could be cross-cutting feature across extensions. Where/how this is implemented is a discussion left for engineering.
From @tqvarnst: it would be nice if you start typing in the Extension box and you only have one result it would be great if you could press ENTER to add it to your selected extensions.
Avoids having to leave the keyboard and use the mouse to click a single result.
Just a nice to have feature that we could add later… ;-)
We need a landing place in quarkus.io.
@kenfinnigan @emmanuelbernard, do you know who is admin of the quarkus.io
domain?
Once @aloubyansky and team are done with the next iteration of Gradle improvements, in particular the ability to add and list extensions.
We should add gradle support for the launcher.
At this stage, we will need to decide:
mvnw
and gradlew
should be created by a shared library instead of int he launcher itself.When unzipping a project, the contents are extracted into the current directory. Example:
$ unzip -t my-app.zip
Archive: my-app.zip
testing: src/main/java/ OK
testing: src/test/java/ OK
...
Project content should be extracted into a folder based on the project name:
$ unzip -t my-app.zip
Archive: my-app.zip
testing: my-app/src/main/java/ OK
testing: my-app/src/test/java/ OK
...
After generating a project and downloading it, clicking on "Generate new project" does not clear out the extensions or the project settings (GAV, etc). Any project info should be reset to default values when "Generate new project" is selected.
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.