GithubHelp home page GithubHelp logo

yours-truly-phil / soulhub Goto Github PK

View Code? Open in Web Editor NEW
7.0 7.0 0.0 3.35 MB

Serves SOUL (Sound Language) Patches

License: MIT License

Java 98.80% Dockerfile 0.22% Shell 0.43% CSS 0.50% Batchfile 0.06%

soulhub's People

Contributors

yours-truly-phil avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

soulhub's Issues

Vaadin Web UI

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).

Sorting in SOULPatchesGrid by average rating stars

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.

no favicon when building image in production mode

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.

add appuser status: banned

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

Refactor UserDetailsService

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.

Create User Role for unconfirmed users

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.

soap and rest api readonly for initial production deployment

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)

Add Google Analytics for Web front

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.

Abstract Entity

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)

create dataprovider for SOULPatches view's grid

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

UI Component to display an AppUser object

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

build read-only view to display soulpatch and files

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=....

Add CRUD persistence (SQL DB)

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.

CI Build

setup a jenkins pipeline to the master branch

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.