yours-truly-phil / soulhub Goto Github PK
View Code? Open in Web Editor NEWServes SOUL (Sound Language) Patches
License: MIT License
Serves SOUL (Sound Language) Patches
License: MIT License
For first Milestone simple page to display all database content in a table and a form to either create new rows or update a selected row plus necessary buttons (create new, delete, update).
the grid supplies the current page, the number of entries, the column to sort by and the direction (asc / desc) and a class with possible filters to the backend.
what doesn't work is sorting by average rating. The query should be something like
select sp from SOULPatch sp left join sp.ratings r where [some filters here] group by sp order by avg(r.stars) desc
I think it might be best to use the criteria builder to dynamically put that query together, but, well, don't know how tbh. so that's that.
there's probably a vaadin addon or sth
build-image and also build layered jar or pretty much apply most of the stuff that's about deploying / building to docker presented here: Whats New in Spring Boot 2.3
Users can download a whole soulpatch as zip or individual soul or manifest files
if a user types invalid credentials in the registration form and presses register, a notification is shown about entering invalid credentials but the button stays disabled after the first click
when editing a soulpatch or soulfile in two tabs / windows, then saving one, then trying to save the other, the other should produce a confirmation dialog saying that the data has been changed and if it's ok to override or the user first wishes to reload the data (and discard changes made)
the confirmation link in the email looks like
localhost:8080/confirm?token=98dc3d0e-5fd1-4b76-9acc-f61f9f44b871
even though it's not deployed on localhost and port 8080
When building the app for production (see README.md on how to - profile 'production', spring-boot:build-image, run with docker-compose up) the favicon isn't shown in the browser tab. Instead there is a blue square with a white circle.
Might be because of security settings blocking paths to resources (like the favicon) that are now different when compiling the Vaadin UI for production.
to order by popularity and category.
a banned user can't act on the site and doesn't have publicly visible data and blocks users trying to register with the same email
for first milestone ability to add files as long as they sound language conform.
Split up SOULHubUserDetailsService in (for securityconfiguration relevant data) UserDetailsServiceImpl and in (for the rest, like registering, verification token stuff, etc.) in new UserService class.
So the SecurityConfiguration Bean can work with a lightweight UserDetailsService without stuff like dependencies for sending Emails, Verification Tokens, etc.
At the moment, after registering a user account the user gets created with status unconfirmed until the user calls the confirm url with the token that's been sent to his email.
An unconfirmed user can't login.
UI components that are restricted to logged in users check whether a user has the role user (which as of now, every user, no matter his status, gets).
Let's better give newly registered users the ROLE unconfirmed and after confirmation the ROLE USER, so that every user can login, only confirmed users can access restricted stuff and an unconfirmed user gets to login into his user details, where he can ask to resend the verification mail or look at his confirmation status, so that it won't be confusing for a user who missed looking for the confirmation mail and therefore can't login and can't register a new account because the email / username is taken.
urgs, I dislike implementing this :/
since the api is not in use and also not really defined, to be safe, check that it's not possible to write to the system via rest / soap.
Endpoint development will continue once there is demand for it (maybe someone decides to create an IDE Extension that lets the user find soulpatches (by popularity / keywords or whatever) straight from the ide)
There is a
<groupId>org.vaadin.addons</groupId>
<artifactId>googleanalyticstracker</artifactId>
that's supposed to work with vaadin. Should be at minimum something along the lines of
@EnableGoogleAnalytics(value = "your_tracking_id_here")
public class MainLayout extends VerticalLayout implements RouterLayout {
public MainLayout() {
...
}
}
Have to check it out.
Maybe it's useful, read later:
https://vaadin.com/directory/component/crud-ui-add-on
once permissions / user login is implemented, this ^
Entities extend AuditModel class, so renaming AuditModel to AbstractEntity
Add a @Version attribute
Move the @id to the abstract entity
create equals with equals if o1 == o2 and not equal if null or getClass() different and sth like
AbstractEntity that = (AbstractEntity) o;
return version == that.version &&
Objects.equals(id, that.id);
also add a hashCode that hashes id and version exclusively
then think about if it makes sense to remove the lombok stuff for equals hashcode of the entities (since they can now use the abstractentity)
into AppRole:
rolename:
'ADMIN' and 'USER'
dataprovider that allows to refresh single rows, such that after a user for example rated (clicked on 1-5 stars) a soulpatch, refreshing its representation doesn't demand full grid refresh
to show user details for a user one can access /user/
this view has to get a little clean up, several greetings and stuff has to be removed.
SOAP Endpoint | Controller <-> Service <-> Repository
Create one component that displays all public information of an AppUser and replace mentions of AppUser either by the component or by the username with a tooltip displaying this component
createdBy, lastModifiedBy etc.
right now, clicking on a soulpatch opens the soulpatch in a dialog, clicking on a file opens the file editor in a dialog. If a User edits a one of his soulpatches, he can open it in the editsoulpatchview with the soulpatch id as url parameter.
I want a view similar to editsoulpatchview but read-only, such that bookmarking / linking to individual soulpatches is easy.
/soulpatch/
to also show files I'm thinking of
/soulpatch/?file=&file=....
OAuth 2 with Github and Google
Test Endpoint setup, test via:
curl --header "content-type: text/xml" -d @docs/request.xml http://<server>:<port>/ws
through web-ui
if not logged in, the "show only my soulpatches" checkpox is invisible and that filter cannot be disabled so the page has to be refreshed
Elastic search seems apt to perform search on soulpatch- and soul-files after a bit of reasearch, but I barely have any experience with it, and because of that, usage of more familiar DBs like mariadb or postgreSQL and usage of google search should speed up development. Searching only in the content of public pages is good enough for now, but open for suggestions.
setup a jenkins pipeline to the master branch
Setup linode to host docker containers with spring boot app and database and make it accessible publicly
JpaSpecificationExecutor for the Repository, implement Specifications
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.