Virtual DJ Studio

Virtual DJ Studio Discussion => Requests for Feedback => Topic started by: Justin on February 15, 2017, 06:13:08 PM

Title: Web App Progress
Post by: Justin on February 15, 2017, 06:13:08 PM
So I've been working a lot on the server-hosted version of the web app. A few things to note:

- All pages, be it the main page or, are fully SSL secured

So you get the padlock icon in your browser, but more importantly information transmitted over SSL is encrypted. So even over an open WiFi, that information cannot be intercepted. That goes for VDJ -> Server communications as well as Customer -> Server. For $4.99/month to get a fully hosted and SSL-secured web-app is practically a steal.

Note that if they type (or QR scan or whatever) a non-HTTPS link, it will automatically redirect them to the HTTPS secured version. So you don't have to tell people to type "HTTPS" etc... just go to "" and the server/browser will take care of the rest.

- I used a free service to create various all of the (current) site icons for different platforms - mostly things like ( for Android, and of course the obligatory ( 16x16 browser tab/address bar/bookmark icon. And everything in between, all the different Android and iPhone/iPad dimensions are available.

Because nobody likes to "play nice" every platform has a different format and asks for a different filename... things like apple-icon-76x76 or ms-icon-70x70 and so forth... so for now I have primitive versions of all (known at this time) variations that may be requested...

So if a user bookmarks to their "home screen", it will use the appropriate icon for the platform. Not the most creative icon for sure, but "My DJ" is pretty clear and concise in its meaning...

At the moment they are all scaled-up versions of the 16x16 that I drew pixel-by-pixel. Later on I'll create specific, sharper icons for the other sizes. At the moment the 16x16 "favicon" that Microsoft introduced back in 2001 is still the most used format... most platforms still just look for /favicon.ico and that's it; but if they do request the apple-icon-114x114 version (certain iPads) or any number of other common variations, they are available.

- Soon I will have the integration necessary to release a 7.7 version, which will natively support using the server-hosted app. I won't remove the built-in app just yet -- but you would choose one or the other. If you want to pay for the hosted version, you get more features, real security, and eliminate router issues etc. Otherwise, you can still give your customers your local IP and use the less-feature-rich built-in version. There will be no new features added to the built-in, while the server-hosted app will evolve and get better as time goes on.

If you are among those using an unlicensed version of VDJ, or are sharing a license between more than one PC, for your own sake don't try to subscribe. It will enforce one license per machine, and of course it has to be a valid, purchased license; "cracked" or "patched" versions will not work as the server will know if your license is valid or not.

I'm still working on the little "menu" icon. It works well with mobile devices, but also works on the PC of course. Soon I will add the ability to change colors, upload your own background images, and other things to fully customize "your" app. I cannot allow certain HTML or JavaScript in the customization, or linking to external image files (SSL vs non-SSL), but you'll have an "assets" area where you can upload those custom images which will be securely served over the HTTPS connection. Mostly (at the moment) I'm thinking about a DJ Profile Picture, a background image, and down the road perhaps additional images (tip jar icon, etc) to be personalized.

Ideally the defaults should work for most; however, I will be adding additional features to allow you to (eventually) customize just about every "word" or "phrase" that is displayed, to hopefully support multiple languages. That will be in a future update however... it's a progressive and constantly improving platform.

So check out and play around - you can't break anything. Test it on your PC, tablet, or phone, and please by all means report any glitches or issues that need work. Submit requests; search for oddball things; try to break it! I'd rather find a problem now, than when it gets released.

I personally have been taking a DJ break for personal/medical reasons, but I'm making my comeback on Friday, March 17th, all dressed in green. So my goal is to have the hosted app up and running by then. It will be part of the 7.7 version, which I will release once I'm comfortable with the app, hopefully within the next 2 weeks (so I can iron out any initial bugs/problems before my "comeback" gig :) )

Most of the "customer" side is functional.

I decided I do want to write a native Android app. This would provide a couple of advantages, mostly the ability to "notify" a singer when their turn is up (like a vibrating light-up coaster at a restaurant). I will try to integrate a browser within the app so the customer doesn't have to switch between browser and app - it would all be self-contained. This part however will be at a later time, when I have time to shift gears and start working on Android code... for now, the web-based app provides just about everything you would need, including (not finished yet) the ability to upload a "selfie" that you (the DJ) can choose to use as their "profile" pic or not.
Title: Re: Web App Progress
Post by: Justin on February 16, 2017, 02:00:05 PM
I had a new feature idea I will probably implement. You don't have to use it, but there are certain circumstances where I think it would be great.

When this feature is "on" (set within VDJ), incoming song requests are AUTOMATICALLY added to the playlist, playing immediately if nothing is playing, or going to the end of the list otherwise.

Why on earth would you want this? Have you ever been roped into a family party or get-together, and since you happen to be a DJ, "hey bring your DJ stuff". Next thing you know, you don't get to enjoy the party - you're working!

So with the phone app *or* a tablet/laptop Kiosk setup, they can just put their own songs in. Just be sure the DJ computer/mixer/microphones are out-of-reach, or at least that everyone knows NOT to touch...

In the "family get-together" scenario, one could just bring the DJ laptop and hook to the stereo (no mixer or mics), and set up a second laptop as a Kiosk (unless you trust them to use the browser on your DJ laptop). And of course they could still use their own device with the app. Or the party host's desktop PC... or whatever...

In addition, it could have a "backup" playlist that goes while no requests are playing, optionally at a (preset) lower volume level. A request would interrupt that list (pausing it) and go full (normal) volume. Actually I kinda want to add a "backup" playlist anyway, to (optionally) automatically play, preset lower volume, when (say) no Karaoke is happening or no specific song requests are playing.

Now, this could potentially be used in a bar setting as well. If a bar owner has a decent music collection, they could let customers have "free music" on certain days or during certain times. This may not go well with the Jukebox vendors... at least around here, even when the bar offers "free jukebox", the bar owner actually puts a bunch of money in it...

Potentially a kiosk-type setup could *replace* the jukebox... if the bar owner were so inclined, or had a DJ set things up for them. Then you have to deal with ASCAP licensing though, so it's best to keep the jukebox around since its license covers the venue...

Anyway it's just an idea, and an option I'll throw in there Justin Case :)
Title: Re: Web App Progress
Post by: Justin on February 23, 2017, 10:28:39 AM
More Progress

I am getting a lot done with the web-hosted app, and it's very close to being ready for limited testing.

I need feedback on one thing: Even though VDJ itself is very much hard-coded English, the web-app can be pretty easily translated -- or so I hope.

So if anyone out there speaks (reads) fluent Spanish, please check out this mock DJ for which I have used the "translation" feature I implemented. I basically just took common phrases and words, and used Google Translate, as a starting point.

The idea is that you, as a DJ who is already using Virtual DJ Studio, most likely reads/understands English, but your patrons may not. You would be able to edit each of the words/phrases into whatever language you wish. I will provide "starting points", eg, my rough Google translated variation, and you can modify as you see fit.

Note that you can also use this just to change the way something is phrased in English if you just prefer a different wording, or want to speak pirate, or thug, or whatever... :)

There are a couple of spots I missed, mostly the phrases: "X through X of more than XXX Results for", and "No Results Found"... eventually I want every word and phrase to be modifiable to suit any language needs (within reason... right-to-left and others may prove difficult, but Spanish, French, Portuguese, Italian.... anything latin-based should be simple word/phrase replacement).

I also realized I missed the drop-down for "Music/Karaoke/Video" but I need to rewrite that anyway so you (the DJ) can choose which of those options (if any) are shown to the user...
Title: Re: Web App Progress
Post by: Justin on February 23, 2017, 01:42:01 PM
For now I found it easier to simply add "Language" as a template (layout) option. Right now there are two options, English and Español, and the language applies to the template. I'll add more languages later, it was just something I wanted to put into place early-on, so that all code I write is language-aware (instead of going back and adding it in later).

Still should be suitable for most. Again any corrections on my translations, let me know :)
Title: Re: Web App Progress
Post by: Fabio on February 23, 2017, 06:24:05 PM

Utilice el icono de menú en la parte superior derecha para obtener más opciones.

Utilice el icono de menú en la parte superior a la derecha para obtener más opciones.

without "a la" it sounds a bit disconnected.

Reproducción en curso:

"Tocando Ahora"

That one didn't make sense at all, so it had to be changed completely.

"Reproducción" in certain places can mean "cancion" (song) but it's too formal.  Even radio DJs don't refer to a song a "Reproducción".  "Tocando" basically mean "touching" when it there it refers to a musical intrument or song, so in this context it means "playing". Same with "en curso" it basically has the equivalent meaning of "this semester" or "this course" which I guess implies a current time, but you wouldn't say a song is playing this semester. The word "ahora" means "now".   So my change above means "Playing now".

Lol...I guess I got carried away with the Spanish lesson...anyway, that's what I saw was wrong.  I'll let you know if I find others.

Title: Re: Web App Progress
Post by: vcationguy on February 24, 2017, 04:55:32 AM
No tengo dinero.
Title: Re: Web App Progress
Post by: Justin on February 24, 2017, 07:31:46 AM
Fabio: Thanks, I've changed both. The first one is actually just part of the "Description" field (the text the DJ fills in), but I've updated the Now Playing.

It might be better for me to take simple words, and translate a sentence instead of just the word, to get a better "in context" translation. From there perhaps I could extrapolate the root word with some trial and error.

Or I could just learn Spanish already... I know a tiny bit but only verbal, not so much written. I can often understand Spanish if I see it written, but writing it is completely different.

I may throw a French variation in there later - I just wanted to get the basic idea of "multi-language support" in place for now.

Ron: LOL - I feel that! :)
Title: Re: Web App Progress
Post by: Fabio on February 24, 2017, 04:41:32 PM!

I took some AP Spanish in High was an easy class because it's my first language  ;D :P

I took French too, but I don't remember much from's been more than 25 years!! ???

Let me know if you want me to translate other parts in Spanish...
Title: Re: Web App Progress
Post by: Justin on February 25, 2017, 11:33:56 AM
I've added a new section, which will be optional. I've been trying to figure out how to handle picture uploads, and I have a very simple idea...

The customer doesn't have an "account" per-se, but they will have a unique ID attached to every request. So the "picture upload" just puts a picture with that ID, and the DJ can look through them and choose to replace that person's VDJ profile pic with the one they uploaded. The customer can change the picture any time that is sitting on the server, but only the DJ can use that pic within the program.

Since each "unique ID" gets one picture on the server, period, you will see (when that singer w/same ID is added to the queue) that they have uploaded a pic and then choose to use it.

Pretty straight-forward, I guess. I've tested this on the big-3 browsers on the PC, as well as Chrome on Android and the default Android browser. The ONLY thing that doesn't work is the upload percent bar in the Android default browser -- which is not an essential feature. It works fine in Chrome (though Chrome won't let you select a pic from your Gallery, only activates the camera; built-in browser gives the option).

Note that on the PC I do not know of a way to activate the camera from the browser without a third-party plugin -- it's just not something PC browsers are meant to have access to directly I guess. So you can just browse to a picture file instead... (edit: working on possibly enabling this on the PC...)


New variable for the "description" section: %SELFIE% shows a camera icon button that says "Upload Pic"...

This page/section does not follow the translations yet...

Speaking of translations - it's funny that every time I load the Spanish version, my browser asks if I want to translate it to English lol... though that may be useful to let one browser on my PC do that so I can see the reverse translation and know if it makes sense...
Title: Re: Web App Progress
Post by: Justin on February 27, 2017, 03:22:24 PM
In case anyone is still following :)

I've been back working on the geolocation features of the app. On your main page (that customers see) you can (optionally) have an embedded Google map based on your current (or up-coming or last-known) location:  <-- Example

It is set to basically fit to the screen dynamically, and all of the normal Google Map interactions are there. Go ahead, size the browser around or rotate your phone :)  I'm really getting the hang of dynamic/fluid web design :)

It only works once you set your latitude and longitude coordinates - which can be done using Location Services, a zip code, or (using Google) by address, hopefully in as automated a manner as possible.

Note that the DJ side of the app primarily intended to be used on a PC platform (mostly for screen space but also certain browser features) however I'm working on a quick mobile-friendly page that lets you log in and:

- Enable/Disable the app
- Select certain options you may change from one gig to the next (allow karaoke/music, allow profile pics, etc)
- Set your location

That last one is why I wanted a mobile-friendly page for the DJ - mobile devices have much more accurate location services than your computer (which often puts me several miles from where I actually am). So you can quickly grab your phone and "turn on" the app, set your location, and go about your business. After a period of inactivity (no contact from VDJ or your own login) it will time out and set your app as "off". I will probably set that for about an hour, in case you forget to turn it off, you won't wake up with a flood of requests at the next gig, and customers won't be looking for you when you aren't actually working.

Mostly, so you don't crowd my map (explained in next paragraph) with non-working DJs :)

Using the same API, I plan to (soon) add a similar map for the main customer portal (www) that, using their location, shows nearby DJs as pindrops on the map. As they zoom out they'll be able to see everyone in the country (planet!) currently using VDJ :)  That could get interesting to play with... I believe I can make those pindrops link to the DJ's own MyDjSongBook page as well - I'm still playing with the API right now.
Title: Re: Web App Progress
Post by: chaz on March 02, 2017, 08:21:18 AM
Nice... Cool feature
Title: Re: Web App Progress
Post by: Fabio on March 07, 2017, 01:24:50 PM
Apparently the forum has not been notifying me of new messages....I just happen to drop in and saw all these messages. ???

So I'll start commenting where appropriate

The map is nice but it can be a bit much if it has to load every time.

Title: Re: Web App Progress
Post by: Justin on March 07, 2017, 02:32:53 PM
I wonder if you have to sign up for notifications for each board (since I just created this section)? I don't know as I never use the notifications lol... I just check a few times a day...

<edit> Not *this* section, the new board dedicated to the app... </edit>

As for the map, I think you've since read that I only load maps upon request now. In place of the %MAP% variable will be a button: "Tap to Load Map". The actual map data only loads after you hit that button.

Otherwise I'd probably exceed my 25,000 map loads per day on a good night (anything more than 25k loads and I have to pay...) so I only contact Google when necessary.

In fact every part of my app is written with that kind of thing in mind - as browser-friendly as possible. All the "social media" links are static images - not pulled from the various social media servers (that would slow page load). The ONLY thing that I have zero control over is the advertisement, but Google is pretty good about enforcing rules on the ads, and they load after the rest of the page loads.
Title: Re: Web App Progress
Post by: Fabio on March 07, 2017, 02:46:35 PM
yeah, I saw that you mentioned about the removal of the feature (the thing about 25K maps displays per day) in another post.

I guess I need to get setup notifications for this new section, but I normally get notified about the other sections too, but I wasn't getting that either.  It's not the first time it has happened, so I just need to pop in every few days just to make sure.  :P