Hacker Newsnew | past | comments | ask | show | jobs | submit | cxam's commentslogin

This has a nice UI, well done on launching! I made something similar but never really thought of monitising it. The focus was on the tagging/annotating for power users with keyboard shortcuts: https://tagx.io


oh, this looks great!


I've had to locally override some JS on the client-side and hoped their backend validation was a lot more sane. The frontend validation logic was limiting the TLD to minimum of two characters and max of four ({2,4}). I use a .email TLD for sites that I don't want to give my personal email.

If you're using Chrome (65+), you can easily bypass any validations/logic by using local overrides (https://developers.google.com/web/updates/2018/01/devtools#o...). As marcolussetti said, it's worth trying out.


If you're working with Python projects and Virtualenv then this is a great alias to have (assuming you call it venv):

  alias venv=". venv/bin/activate"
Just cd to a project root and venv :)


I do something similar, although I use venv to create a new virtual environment and update pip and setuptools:

  alias venv='python3 -m venv venv && source venv/bin/activate && pip install --upgrade pip setuptools -q'
And then ae and de to activate/deactivate a venv:

  alias ae='source venv/bin/activate'
  alias de='deactivate'


This is great! I've always been interested in video related products and services and you've done a pretty good job on getting the annotations overlay the video.

> I switched away from Vue as soon as I hit my first refactor. I struggled to rebuild big parts of the application because Vue allowed me to do everything and nothing. I know I probably could have done this in React or continued with Vue, but because of the following reasons I decided against that

Funnily enough, I went through a similar thought process but between React and Vue. What's uncanny is that it was also for a video annotation service I was building (https://tagx.io/). I ended up going with Vue and like Plopdown, used Plyr (https://plyr.io/) as the video player (also a great project). Your three reasons for not continuing to use Vue, I'm wondering if that's really because Angular was your comfort zone?

  [1] Typescript + Vue works well (that's how I built mine). 
  [2] You could have used RxJS with Vue. 
  [3] Vue has less boilerplate code than Angular and wouldn't have made this project any more difficult to maintain


Oh totally, I'm not gonna pretend that it wasn't because I knew how to organize an Angular project.

That said, I know how I'd manage multiple projects via NX, and knew the rules to effectively maintain this project for the foreseeable future.

I really do love Vue, but I need structure, because as a human I have terrible memory. I don't love unit testing, and I barely love integration testing, so strict typing and good naming is key to my style of coding.

I hit a wall with Vue, which I've similarly hit with AngularJS, at some point I hit a level of complexity that Angular doesn't allow, but Vue does.


> That said, I know how I'd manage multiple projects via NX, and knew the rules to effectively maintain this project for the foreseeable future.

I believe NX is aiming to bring in Vue support through their plugin system, but yea, I understand that it would make it easier in your case since it already supports Angular. If you like the monorepo setup and looking for a more generic solution then checkout lerna (https://github.com/lerna/lerna).

> I really do love Vue, but I need structure, because as a human I have terrible memory. I don't love unit testing, and I barely love integration testing, so strict typing and good naming is key to my style of coding.

Vue, as simple as it is, can have structure and easily adopt to large scale projects. As I mentioned in my previous comment, you would have not had any issues using TypeScript with it.

> I hit a wall with Vue, which I've similarly hit with AngularJS, at some point I hit a level of complexity that Angular doesn't allow, but Vue does.

What exact issues did you have with Vue? Just curious as nothing you've mentioned so far are actual issues, but rather, you having better experience with using Angular.


> looking for a more generic solution then checkout lerna (https://github.com/lerna/lerna).

Thanks, I've actually used lerna alongside NX in the past before! NX doesn't have a great system for publishing packages as they believe it defeats the purpose of a monorepo, using them in tandem seems totally fine.

> What exact issues did you have with Vue? Just curious as nothing you've mentioned so far are actual issues, but rather, you having better experience with using Angular.

I found service ownership and instancing to be cumbersome. When I'm communicating data to a bunch of different components, I want to know where in the hierarchy that service lives and either allow the same service to be used by everything or make multiple clones.

Because of the way vanilla Vue is architected, it seems like the component hierarchy and the data hierarchy are conflated, which I personally don't like.


I built something similar that might work depending on your use case and doesn't require installing an extension. Check out https://tagx.io/

However, it doesn't overlay any annotations over the video like plopdown does (which is a great feature!), only on the side of the video.


Caddy, specifically v2 (https://caddyserver.com/v2)

I've been using Caddy v2 all through beta/RC and glad it's finally stable with a proper release. I moved away from using nginx for serving static content for my side projects and prototypes. I'm also starting to replace reverse proxying from HAProxy as well. The lightweight config and the automated TLS with Let's Encrypt makes everything a breeze. Definitely has become part of my day-to-day.


Cloudflare Workers and their KV service (https://www.cloudflare.com/products/workers-kv/) is great. I built a side project (https://tagx.io/) completely on their services from hosting the static site, auth flow and application data storage. KV is pretty cheap as well starting around $5/month with reasonable resources.


I am also very interested in using worker + kv. Can kv be used as a proper application database? Has anyone ever done that?


If by application database you mean to the level of an RDBMS then no. It's a key-value data store. You get your CRUD operations, expiry, key listing and the ability to do pagination with keys always returning in lexicographically sorted order. Any relation data you want to have would be using the key prefixes, e.g.:

  article:1 -> {"user": 1, "content": "..."}
  user:1 -> {"name": "username"}
  user:1:articles -> [1, ...]


yep. thats the plan. i will have keys like

postid:someid/text

postid:someid/author

etc.

the relation aspect doesnt daunts me. As long as I can have a list/collection as a value, i can define a working schema.

I am more worried about if its costlier than normal dbs. and if there are any other gotchas to keep in mind as kv workers have scant documentation.


If you're comparing this to a normal DB, the biggest worry should be that it's not ACID compliant. Definitely something to consider if your data is important. The limitations for KV is listed here: https://developers.cloudflare.com/workers/about/limits#kv

You should also consider how you intend to backup the data as there currently isn't a process to do that outside of writing something yourself to periodically download the keys. This will add to your usage cost depending on what your strategy is, for example, backing up old keys that gets updated vs only new keys by keeping track of the cursor.


I've seen tagx a couple of times before. Awesome to know who the author is.


It did cross my mind when I released it. I'd like to refactor the code and bring in more tests to make it "contributor friendly" first. Feedback has been great so far and I'll be implementing some of the features on the back of that. There is a repo (https://github.com/cxam/tagx.io) already that I'm using for issue tracking and I'll be able to push the code there when it's ready.


Nice, I came across the repo after I posted.

Even if the code isn’t perfect it’s of interest to me because you also used Vue.

With respect to tests, maybe the community can contribute.

Will keep an eye on the repo..!


Thanks for the feedback pknight. I'll address the points as follow:

(1) While watching it would be great to press a button to generate timestamps

This is already possible using hotkeys and documentation for it can be found here: https://tagx.io/support/advanced/hotkeys

(2) then compose tracks by selecting any two timestamps, with the ability to add tags to timestamps or tracks while the video is still playing or after

Just to clarify, do you mean the ability to add the current point in time of the video to different tracks? In which case, this is already possible using multiple hotkeys as outlined above. Please let me know if this is not what you meant.

(3) with the link just playing between timestamp a and timestamp b

You are able to create a loop between a tag or a set of tags, please see loop settings outlined here: https://tagx.io/support/interfaces/video

With regards to autoplay, this is a bit finicky depending on the browser and is usually not recommended due to the negative user experience so I didn't include an option to enable this feature.

Hope this is clear, let me know if you have any more questions.


Thanks! It took me a while to digest how that tagging workflow worked with the hotkeys, but now I get it. That does work! I think one of the things that tripped me up was the lack of visual feedback on the second press of a key.

Am I right in thinking that the hotkeys don't work while the video is paused?

I guess the other thing I'd love to see is a more dedicated 'share' mode so that you can create a link with a simplified screen that starts playing the track section of a video when the user presses play.


Great, glad this worked well for you. I agree with your point on the visual feedback. Depending on which tab you have active, it will always show the newly created tag on the list when created. However, maybe a short-lived toast message could work better here.

You're correct, the hotkeys won't create a tag when the video is paused, instead it will start playing the video on first press then you'd need to press it again to actually creat the tag. If you want to manually create tags without playing the video then this can be done on the tracks interface. The "+" button in each track will display the modal to do so.

With simplified sharing, would you expect to show only the video without any of the tags and tracks on display? There are existing layout options you can customise such as hiding the tag/track listing and the tagging controls, even resizing the video. However, the play button just plays the video as normal. I think what you're suggesting with the play button only playing the tracks when shared in "simplified mode" would provide a cleaner interface to the end user without the additional components displayed.

Thanks again for the feedback, if you do have any other ideas and this post gets locked for commenting after two weeks, then please don't hesitate to create an issue or drop me an email as listed here: https://tagx.io/support/general/contact


Thanks! And yes, with simplified sharing it would be ideal to only have the player with just the track targeted and nothing for the person receiving the link to guess. So if you send someone a sports highlight, or a specific sketch from a comedy show, or a specific exercise explained in a tutorial, they only need to press play and it would only play the track, not the whole video.

Your app definitely has a lot of utility.


Great, I think this is something I'd like to bake into the next release.


These are pretty good use cases, thanks! I hadn't thought of it in a political context, I can definitely see it work there considering the lengthy footage.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: