I created a web app for rating, discovering, and discussing films, series, games, books and music using Django/Vue

Here it is: www.peepthis.app

Summary:

Rate, discover, and discuss interesting films, series, games, books, and music. Connect with users with compatible taste. An SSR/SPA web app built with Vue/Vuetify/Nuxt on the frontend and Django REST Framework on the backend.

Features:

-Rate, review, and track your media (films, series, games, books and music).

-See your taste compatibility with other users, find users with the most compatible taste.

-Receive personalized media recommendations based on your ratings, or browse the media database using various filters.

-A fully-featured subreddit-style community (topics with nested comments) for each media title.

-Create lists to organize your media, browse user-curated lists.

-Fully-featured instant messaging between users and real-time notifications.

-Custom-built change management system for updating the media database. Any user can submit new media titles or updates to existing ones, which are gated to mod approval.

-Responsive design.

I’m a hobby coder and this is my first and only web project, but I’ve put a lot of time and effort into it. If anyone has any questions about how I implemented something or how I got to this point, just let me know. I’d love to hear feedback/suggestions/comments, especially about design since that’s what I struggle with the most.

4 Likes

Oh my God, it is really amazing. Terrific job, CoolDogAnytime

Thank you themaleem!! I really appreciate it.

looking good and amazing job, do you share your project?

Hey, your site looks amazing, great work. I think the design is quite nice and idea for the site is cool.

I’d love to know what you’re using to do your social queries, like how do you find users with compatible tastes? Are you using a graph database?

Also for your nested comments, did you go with either of django-mptt or treebeard for handling the tree models? I used to use django-mptt but switched to treebeard.

Anyway, great work!

Thanks snirben and tyler! I really appreciate it.

@snirben I’m not planning on sharing the full repository at the moment (this may change in the future), but if you’re interested in anything in particular then let me know I can send you excerpts.

@tyler I’ve just using a standard Postgres database. Compatibility scores between users are generated in the background (and stored as a model) and are based on the average difference between the users’ overlapping ratings with some weights. Users with many ratings with similar scores will be highly compatible while users with many ratings with dissimilar scores will be incompatible. I also use this compatibility data to provide recommendations- users are recommended media that is highly rated by users who are most compatible with them. I’m definitely not that knowledgeable on statistics, so I’m still learning better ways to do this as I go, but I don’t plan to change it dramatically.

I actually built my own nested comments system a while ago and just recently heard of django-mptt and treebeard (this is a question that I’ve received a lot when I posted my site on reddit). It’s on my to-do list to look into these packages, since I wouldn’t be surprised if I’ve overlooked some best practices. However I’ve done tests with a large number of nested replies, and so far my comment queries seems to be performing well enough.

Basically I have a comment model that has a ForeignKey relationship with a topic and an optional ForeignKey relationship with itself (for nested replies). Comments also have a ‘depth’ IntegerField (0 for top, 1 for the next level, etc.) to filter by. The initial comment data fetch returns top level comments and a limited numbers of child comments depending on depth. The user can click a ‘see more replies’ button on the front end to fetch more undisplayed comments at any depth. Pretty simple, but it get’s the job done.

Amazing website…really. How long does it takes to build such website?