RedMwp
@RedMwpAll comments
- @VeteranalphaSubmitted 4 months ago
- @VillageR88Submitted 4 months agoWhat are you most proud of, and what would you do differently next time?
I completed this project using Flask for the backend, with the frontend built using vanilla CSS, HTML, and JavaScript. I also developed a custom JavaScript script to parse the DOM and update it client-side, mimicking some React-like behavior, although it’s not a true React implementation. This approach avoids full page reloads and performs quite efficiently.
I used pure CSS for this project as an experiment to challenge myself, but I've since realized that Tailwind would have been much more enjoyable and efficient. Working solely with vanilla CSS proved to be more cumbersome than I anticipated. Additionally, managing state and interactions with just vanilla JS was somewhat frustrating. For my next project, I plan to use Flask along with Preact, TypeScript, and Tailwind to improve development efficiency and functionality.
@RedMwpPosted 4 months agoThis is amazing, I would like to know how you prepare before you start coding..
0 - @tedikoSubmitted 4 months agoWhat challenges did you encounter, and how did you overcome them?
Hello! 👋
MovieDB is a full-stack application written in vanilla JavaScript that serves as an interactive hub for movie and TV series enthusiasts. To provide seamless user authentication and data management I used Supabase backend-as-a-service (BaaS) solution. This integration ensures secure user registration and login process, efficient session management which enables users to build their own collection by bookmarking favorite movies and TV series as well as completing profile with data and custom avatar with all user-specific data securely stored in the database and storage. App fetches data from The Movie Database (TMDb) API to deliver up-to-date and extensive information on films and TV shows. Both API and database operations are handled on Netlify serverless functions backend to reduce the load on the frontend, leading to faster response times and a more responsive user experience. This allows for better management of sensitive data, as environment variables can be securely stored and accessed only on the server side, removing the risk of exposure in client-side code. MovieDB App allows users to explore, search, bookmark, create their own user profile and engage with a vast collection of media content as well as display information about a specific movie/TV series on sub-page.
With the integration of user authentication I've decided to elevate app functionality and user experience by designing an landing page that serves as the introduction to MovieDB App. This landing page streamlines the user authentication process by providing registration form and login cta button redirecting respectively to register and login sub-page. Moreover showcases selection of popular movie trailers in slider that users can watch in popping lightbox modal that has trapped focus for users that require accessibility features. Additionally, there is a placeholder section with mockup image that contain video within.
After logging in, the user is redirected to the app which is based on the single page application (SPA) architecture with custom router. For handling bookmark state across SPA I created central state management system - bookmarkManager. This allows components to subscribe to bookmark updates and receive notifications when bookmarks change without the need of fetching it from database. If logged in user navigate to route that doesn't exists router will redirect to 404 page. To improve user experience while fetching data I implemented shimmer effect which is simply visual feedback during data fetching. User can login on test account to explore app without the need to register, but test account is limited when it comes to updating profile with custom informations/avatar.
🚀App features
- User Authentication: Users can create an account by providing email and password and then log in to the app using their credentials, providing a secure and personalized experience.
- Search: Functionality that allows to search for movies or TV series by title.
- Trending: Dedicated section where users can view a list of currently trending movies or TV series.
- Latest Trailers: Showcase of popular movie and TV series trailers in a slider. Users can watch them in a lightbox modal.
- Recommended for You: Personalized feature that suggests movies and TV series based on the titles user have bookmarked.
- Top rated: A list of the top 100 movies and TV series, ranked based on their overall user ratings.
- Bookmarks: Personalized space where users can store and manage their bookmarked movies and TV series.
- Details page: Each movie has a dedicated sub-page that provides users with a detailed informations, list of the actors involved, photos and similar titles recommendations.
- Random title: Randomly selected movie/tv series displayed within details page.
- Profile: Customizable account settings. Users can upload a custom avatar or update account information including name, email, and password.
- 404 page: "Page Not Found" with a little easter egg. Instead of a standard error message, users are greeted with a funny message and a playful image. User need to be logged in.
💡Here's some new things I used or learned:
- Sass placeholder selector is special kind of selector known as a “placeholder”. It looks and acts a lot like a class selector, but it starts with a % and it’s not included in the CSS output.
- The try..catch statement is a powerful tool for error handling in JavaScript. By implementing it effectively, you can create more resilient applications that provide a better experience for users.
- JSDoc comments enhances code readability and maintainability by providing clear documentation directly within the source code.
- Focus trap is a JavaScript utility designed to manage keyboard focus within a specified element, enhancing web accessibility by preventing focus from escaping outside of interactive components, such as modal dialogs.
- URLSearchParams is a built-in JavaScript object that provides a convenient way to work with the query string of a URL.
- Promise.all() allows multiple fetch operations to be executed concurrently, rather than sequentially. This can significantly improve performance, especially when dealing with independent API calls
- How to build router in vanilla JS - Routers control the application's views based on the URL, without the need for full-page refreshes. While several libraries such as React Router for React offer robust solutions for managing routes in SPAs, you can build your own rudimentary router in Vanilla JavaScript to understand the underlying mechanics.
- createObjectURL() static method of the URL interface creates a string containing a URL representing the object given in the parameter (Blob in my case).
- Replacing switch statements with Object literals
🛠️Build with: (can be found also in my others projects)
- Vite is a build tool that aims to provide a faster and leaner development experience for modern web projects. It consists of two major parts: a dev server, and build command that bundles your code with Rollup.
- Sass CSS pre-processor is a stylesheet language that’s compiled to CSS. It allows to use variables, nested rules, mixins, functions, and more, all with a fully CSS-compatible syntax. Sass helps keep large stylesheets well-organized and makes it easy to share design within and across projects.
- BEM - Block, Element, Modifier methodology, which is a popular naming convention for classes in HTML and CSS. BEM is useful when it comes to larger, more complex projects when code organization becomes crucial. The idea behind it is to speed up the development process, and ease the teamwork of developers by arranging CSS classes into independent modules.
- Supabase is an open-source backend-as-a-service platform designed as an alternative to Firebase.
- Serverless Netlify functions open a world of possibilities for running on-demand, server-side code without having to run a dedicated server.
- Swiper is a JavaScript library that creates modern touch sliders with hardware-accelerated transitions.
❓Questions:
- Any suggestions on how I can improve are welcome! If you want to learn more about my process - README.
- @SandyAstorgaSubmitted 4 months agoWhat are you most proud of, and what would you do differently next time?
I am learning to use Bootstrap more quickly, there are still details to reinforce. It would improve the quality of the code.
What challenges did you encounter, and how did you overcome them?My biggest challenge is still Javascript.
What specific areas of your project would you like help with?Javascript 🥹
- @tugcekizildgSubmitted 4 months ago
- @NinaLiaoSubmitted 4 months agoWhat are you most proud of, and what would you do differently next time?
透過網路資訊或是AI,並自己思考解決問題
What challenges did you encounter, and how did you overcome them?網路資訊或是AI,還有透過F12去查看哪個物件有問題
- @tedikoSubmitted 7 months agoWhat challenges did you encounter, and how did you overcome them?
Hello! 👋
That was another entertaining challenge in which I learned a lot of new things! Right from the start I decided it would be a great idea to use GSAP library to create a parallax effect for sections, rather than creating subpages. Each section has tabs through which user can display new content. New content is dynamically added in JavaScript so I needed find a way to prevent images from loading each time tab has changed. For this purpose I used the Intersection Observer API which helps me detect visibility of a section that appears in the user's viewport. When this happens the
preloadImages()
function is called and creates newHTMLImageElement
instance withImage()
constructor to which I attach the src of each image from the section. In the "crew" and "technology" sections, the user can change tabs and content by moving the mouse/touch horizontally. Since the page has a lot of animations ScrollTrigger animations using GSAP are disabled for users who have setprefers-reduced-motion
. Learned how to share variables between JavaScript and Sass since I needed to use media query breakpoint variable value formatchMedia
but I didn't want to do it with copy and paste. I found a way to synchronize my css and js so that my CSS is the source of truth and share values with JavaScript. I used CSS Modules for this purpose. CSS Modules with ICSS specification introduces the:export
directive to act as a way to export defined values. Coupled with Sass variables, it allows you to export them.🐞Bugs:
- Unfortunately, when creating the effect of moving sections using
position: sticky
and GSAP, there are several bugs that I cannot eliminate at the moment. When a user uses the keyboard to navigate a page, the viewport often does not show the active element. The second mistake is responsiveness. On some small screens (in terms of height), sections are cropped and navigation does not lead to the appropriate section. If I find a way to eliminate these bugs and maintain the animations, I will update the project but for now I'm satisfied with how it looks and what I achieve creating this.
💡Here's some new things I used or learned:
- Share variables between JS and Sass - A way to synchronize CSS and JavaScript so that CSS is the source of truth and share values/variables with JavaScript.
- Intersection Observer API - Intersection Observer API provides a way to asynchronously observe changes in the intersection of a target element with an ancestor element or with a top-level document's viewport.
- preload images in JS - Preload lets you tell the browser about critical resources that you want to load.
- prefers-reduced-motion - The
prefers-reduced-motion
is used to detect if a user has enabled a setting on their device to minimize the amount of non-essential motion. The setting is used to convey to the browser on the device that the user prefers an interface that removes, reduces, or replaces motion-based animations.
🛠️Build with: (can be found also in my others projects)
- GSAP library - GSAP is a JavaScript library for building high-performance animations that work in every major browser.
- Vite - Vite is a build tool that aims to provide a faster and leaner development experience for modern web projects. It consists of two major parts: a dev server, and build command that bundles your code with Rollup.
- Sass CSS pre-processor. Sass is a stylesheet language that’s compiled to CSS. It allows to use variables, nested rules, mixins, functions, and more, all with a fully CSS-compatible syntax. Sass helps keep large stylesheets well-organized and makes it easy to share design within and across projects.
- BEM - Block, Element, Modifier methodology, which is a popular naming convention for classes in HTML and CSS. BEM is useful when it comes to larger, more complex projects when code organization becomes crucial. The idea behind it is to speed up the development process, and ease the teamwork of developers by arranging CSS classes into independent modules.
❓Questions:
- Any suggestions on how I can improve are welcome!
- Unfortunately, when creating the effect of moving sections using
- @Kajal1408Submitted about 1 year ago
- @mapopo2Submitted about 1 year ago
Finally cut down code using css focus styling to change colours of rating buttons when clicked, turning selected elements into an array in javascript, getting the innerHTML(number) and using forEach() to show the clicked number on the thank you message
@RedMwpPosted about 1 year agoThe rating state is broken , opened it in chrome. Try giving it a width
Marked as helpful0 - @RahulSheshSubmitted about 1 year ago
- @ICode88Submitted about 1 year ago
become a frontend developer
- @ughvopSubmitted about 1 year ago
First time working with scss, i liked how bem makes my code organized. but i believe i could have better use with scss functions, specially with desktop display.
you didn't think i would post a solution without asking for help, right? my stars need spacing between them, but i still want to have them using
background-image
background-repeat
how can i do that?