STRV's Frontend Academy repository

Overview

Eventio

A project developed during the STRV Frontend Academy 2022

Built With

Getting Started

Follow this section to get the project running in your development machine.

Prerequisites

Before getting started, make sure you have these tools installed:

We recommend you use nvm to install Node.js.

Installation

Provided you have all prerequisites ready, you can install the application with the following command:

yarn

Environment variables

For now, this project does not depend on environment variables. Once there are some, we'll document here how to get and install them.

Start the Application

To start a local server with the running application, run the following:

yarn dev

Deployment

The application is deployed at Vercel everytime new commits are pushed to the main branch (production mode) or to other branches (preview mode).

In case you need to deploy manually, you can install the Vercel CLI and run the following command: vercel

Roadmap

  • Project setup
  • List of events
    • Consume events from API
    • Present the list of events
    • Allow switching between past/future events
    • Allow switching between list/grid view modes
    • Allow user to apply to an event
  • Login
    • Create login form with client-side validation
    • Integrate form with API
    • Redirect user based on authentication status
  • Create event
    • Create new event form with client-side validation
    • Integrate form with API
    • Redirect user to the list after creation
    • Refresh list of events upong creation

Contributing

To start contributing to this project:

  1. Clone the repository
  2. Create a new branch (git checkout -b feature/feature-name)
  3. Commit your changes (git commit -m 'feat: add login form')
  4. Push to the cranch (git push origin feature/feature-name)
  5. Open a Pull Request
Comments
  • 16.01 – Refactoring: Code Climate

    16.01 – Refactoring: Code Climate

    Code Climate is one of many tools that can help you spot issues in your codebase: duplication, complexity, code smells, and so on. This PR demonstrates a simple configuration for Code Climate to ignore and include only files related to our application's code.

    The following is an initial report:

    Screen Shot 2022-07-29 at 16 32 33

    Keep in mind, however, that Code Climate and other static analysis tools should not have more relevance in decisions than developers themselves. They are helping tools, such as ESLint, etc, and as such, anytime you believe the tool is wrong, feel free to contradict it. In our report, for instance, it complains of some SVG files being almost identical – but in that case, the abstraction of such a "static" content would harm code clarity, not help it.

    More robust solutions such as Sonar's SonarQube, but these are usually tricky to setup, and have many environment requirements to start working. Code Climate is less impressive, but it's an easy tool to include in your workflow, as it's a third-party service.

    opened by lucasconstantino 1
  • 10 – Networking – Improvements

    10 – Networking – Improvements

    This PR holds some improvements and fixes necessary for the upcoming authentication lesson.

    • [x] Full implementation of mergeOptions as shown in the live demo.
    • [x] Added PUT, PATCH and DELETE methods, for ease of use.
    • [x] Added client instance as parameter (inside a context object) of interceptors for self-referencing.
    • [x] Added async support to interceptors.
    opened by lucasconstantino 1
  • Fix: server-side rendering styles

    Fix: server-side rendering styles

    opened by lucasconstantino 1
  • 16.07 – Refactoring: Reorganize Modules

    16.07 – Refactoring: Reorganize Modules

    This PR intends to fix some coupling that we identified, especially with UI components living in a module that ain't related to that domain. On top of that, we try to rethink the domains we have, and, as the application evolved, evolve the architecture to reflect the domains we now know exist.

    opened by lucasconstantino 0
  • 16.05 – Refactoring: Environment Variables

    16.05 – Refactoring: Environment Variables

    Consuming variables from process.env in multiple parts of your system is a know problem, sometimes even for security reasons. But beyond that, there are some tasks involved in this consuming of env variables that's just repetitive: checking if the value is present, typing the value, etc.

    This PR solves it by introducing a main controller for environment variables with these common tasks simplified.

    opened by lucasconstantino 0
  • 16.04 – Refactoring: Module Entrypoints

    16.04 – Refactoring: Module Entrypoints

    When codebase grows, so does each module/feature's complexity. In a short time, you end up consuming module's assets directly, making it very hard to refactor these modules without touching other parts of the system. IDE tools can help with these refactorings a lot – for instance, by automatically changing import paths when you move some file – but better than that is to remove the problem altogether.

    On this PR, we establish each feature as it's own "API", exposing to other modules only what is needed to be exposed. It reduces bloated code, as imports get simpler, and improves predictability, as you from a consumer perspective won't need to navigate path of other modules to consume whatever you need from it.

    opened by lucasconstantino 0
  • 16.03 – Refactoring: Architecture Maps

    16.03 – Refactoring: Architecture Maps

    Yet another helpful way to understand software and spot room for architectural refactoring is to actually put it in a visual way. Dependency cruiser helps us with that.

    We won't go deeper on details of this tool, but by implementing it here I hope it serves as reference and inspiration to your own projects. This is what it looks like (click to open an interactive view of it).

    frontend-academy-2022-private-git-lessons-16-ref-251251-strvcom vercel app__dev_architecture_5 html

    opened by lucasconstantino 0
  • 16.02 – Refactoring: Bundle Analyzer

    16.02 – Refactoring: Bundle Analyzer

    Analysing code bundles might be a good source of inspiration on how to reorganize your code or identify heavy files to refactor. Keep in mind this analysis is usually polluted by external codebase, such as React itself, which tend to take a bigger part of your bundle than your own code.

    This PR introduces a shortcut script to start the bundle analyzer that is already present in Next.js.

    Screen Shot 2022-07-29 at 16 43 46
    opened by lucasconstantino 0
  • TypeError: Cannot read properties of undefined (reading 'grey')

    TypeError: Cannot read properties of undefined (reading 'grey')

    Sentry Issue: NEXTJS-H

    TypeError: Cannot read properties of undefined (reading 'grey')
      File "app:///_next/server/webpack-runtime.js", line 33, in __webpack_require__
        /******/ 			__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
      File "app:///_next/server/webpack-runtime.js", line 33, in __webpack_require__
        /******/ 			__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
      File "app:///_next/server/webpack-runtime.js", line 33, in __webpack_require__
        /******/ 			__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
    ...
    (5 additional frame(s) were not displayed)
    
    opened by sentry-io[bot] 0
  • Advanced: Authentication step 3 – Middleware route protection

    Advanced: Authentication step 3 – Middleware route protection

    ⚠️ Warning

    The changes contained in this PR are considered advanced, and won't be part of the final application. We'll leave it here as a reference and for learning purposes.


    This PR builds on top of #19 to improve UX by redirecting users from protected pages before hitting the client-side.

    opened by lucasconstantino 1
  • Advanced: Authentication step 2 – API Routes

    Advanced: Authentication step 2 – API Routes

    ⚠️ Warning

    The changes contained in this PR are considered advanced, and won't be part of the final application. We'll leave it here as a reference and for learning purposes.


    This PR builds on top of #18 to improve security by leveraging API Routes and cookies.

    opened by lucasconstantino 1
  • Advanced: Form state management step 3 – useForm

    Advanced: Form state management step 3 – useForm

    ⚠️ Warning

    The changes contained in this PR are considered advanced, and won't be part of the final application. We'll leave it here as a reference and for learning purposes.


    We've covered how to go further on UX and state managing by adding touch states and abstracting form state managing to a separate hook. Now, what about we make this whole logic reusable to other forms?

    This PR builds on top of the the previous login form state managing to cover:

    1. Extract form state management from useLoginForm to useForm
    2. Make form state generic, so it can be used with different form inputs (code)
    3. Update useLoginForm to use useForm (code)

    That's it! Now we could potentially use the same useForm hook to other forms with have :)

    opened by lucasconstantino 1
  • Advanced: Form state management step 2 – useLoginForm

    Advanced: Form state management step 2 – useLoginForm

    ⚠️ Warning

    The changes contained in this PR are considered advanced, and won't be part of the final application. We'll leave it here as a reference and for learning purposes.


    With the introduction of login form state management after Lesson 08: Built in React APIs, we've learned how hard it can become to handle form state manually – input values, validation states, errors, submit state, etc. And, if we manage to have the state itself working, chances are the UX won't be the best anyway. That's probably enough for us to realize how form libraries are essential to building high-quality forms in our applications.

    But, what about we push a little bit more, and pretend there was no form library at our disposal? Turns out this is a great opportunity for us to play around with React APIs.

    This PR builds on top of the the previous login form state managing to cover:

    1. Abstract away form submitting logic and state (code) – let your handlers care for the application needs only (code)
    2. Abstract away low-level event handling (code, code, and code)
    3. Touch states
      1. Mark inputs as touched when they stop interacting with an input (code)
      2. Bother users only after they have interacted with the input (code)
      3. Or after as soon as they try to submit the form (code)
    opened by lucasconstantino 1
  • Advanced: SSR styles encapsulated in a Higher-Order Component

    Advanced: SSR styles encapsulated in a Higher-Order Component

    ⚠️ Warning

    The changes contained in this PR are considered advanced, and won't be part of the final application. We'll leave it here as a reference and for learning purposes.


    This PR intends to showcase two things:

    1. Real world use case of a HOC (Higher-Order Component)
    2. How to use HOCs to decouple concerns

    The idea here is we abstract away the whole styles SSR logic – which was copied from Next.js' official styled-components example – out of the _document.tsx page. The intention is to isolate the complexity of this styles SSR process, and make our custom Document as simple as possible, with only application concerns and not low-level SSR concerns.

    Besides that, having the styles SSR encapsulated allows the Document to embark other eventual getInitialProps needs that might become necessary, without us having to mingle the complexity of multiple different concerns.

    opened by lucasconstantino 1
Owner
STRV
Design & Engineering Company
STRV
The culmination of Encode Academy, the 8-week long Solidity course by Encode Club in collaboration with Extropy

Encode Academy | DAO: Real Estate & Renting What is this? This is the culmination of Encode Academy, the 8-week long Solidity course by Encode Club in

Oliver H. D. 5 May 25, 2022
A great result management solution for schools, hospital, academy and other. If you are a php developer, contribute to this respository for more advancement of the project.

result-management-pro A great result management system for schools, hospital, academy and more. Contributions Willing to add more features to this gre

Adeleye Ayodeji 8 Jun 17, 2022
Project developed as Capstone of Q4 Backend module of the Fullstack Developer Course of Kenzie Academy Brasil by the group @ezms, @Nafly09, @RafaelSchug, @victorlscherer, @Vinicius2m, @ManoelaCunha

✨ Quokka Services ✨ ?? Serviço rápido e sem preocupação! ?? O objetivo da nossa aplicação é diminuir a dificuldade que moradores de condomínios encont

Manoela Fernanda Girello Cunha 4 May 4, 2022
We are students of group named "Special-Team" of GоIT academy. We graduated JavaScript course and for consolidate in practice 📌 knowledges received on this course, we together 🤝 developed graduation project

Проект сайту "Filmoteka" Привіт! ?? Ми студенти групи під назвою "Special-Team" академії GоIT ?? ?? Ми закінчили курс JavaScript і для того, щоб закрі

Oksana Banshchykova 12 Jan 3, 2023
An extension that scraps a khan academy unit and turns it into a notion todo.

The K-N Extension What is this? This extension injects a javascript file to the Khan academy website, and it adds a "Copy" button to every Khan academ

Abdulrhman Jalal 2 Jun 2, 2022
Repositório do HandsOn 4 - Gama Academy [XP41]

parrot Repositório do HandsOn 4 - Gama Academy [XP41]. Nesse projeto o desafio proposto foi desenvolver uma rede social chamada Parrot para condomínio

Helenilson Holamek 3 Oct 18, 2022
Grupo de Trabalho para o projeto do Desafio Chefão do XP 41 do Curso de FullStck da Gama Academy

Bem Vindos a Tech Dental ?? A Tech Dental é uma plataforma para gestão de prontuários de pacientes em clínicas odontológicas. Secretárias ou até mesmo

Helenilson Holamek 6 Jul 27, 2022
Simple budget-tracker web app developed using Vanilla JavaScript. Exercise from Warren Tech Academy.

Willow Personal Finance - Exercise from Warren Tech Academy About Project screenshots Installation Extra notes About Tools: HTML CSS (SASS) JavaScript

Douglas Ferreira 7 Dec 14, 2022
Educational Project, Kodlama.io Etiya Academy

EtiyaTelcoProject Development is progressing in the dev branch. This project was generated with Angular CLI version 14.0.6. Development server Run ng

ahmet-cetinkaya's other repos 10 Dec 2, 2022
O objetivo dessa aplicação era criar um frontend feito totalmente em Javascript, sem nenhum arquivo HTML ou CSS pré-criado. Além disso, esse projeto também é o frontend da minha API 100% NodeJS.

Projeto HTML 100% Javascript Front-end feito "sem HTML" Conteúdos ➜ Sobre o projeto ➜ O que aprendi ➜ Como usar ?? Sobre o projeto Voltar ao topo O ob

João Victor Negreiros 19 Aug 3, 2021
This is my portfolio GitHub clone website. The frontend is build using NextJS and TailwindCSS.

Github Clone Portfolio Website Tech Stack used: NextJS Tailwind CSS The contact form in this website is connected to Notion. If you want to integrate

Unnati Bamania 22 Oct 5, 2022
frontend for my website

personal portfolio How to install? yarn install yarn dev Note: make sure to be using Node 14 and up. BIG THANKS TO @alii for letting me use his websit

acn 3 Jan 5, 2022
Frontend tech guide and collection of highly recommended materials

Frontend Learning Kit Frontend tech guide and collection of highly recommended materials Show your support by giving a ⭐ to this repo 2022 Frontend De

Sadanand Akshay Pai 2.9k Jan 7, 2023
Finisterre-frontend - Front end for finisterre ecommerce application.

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: ya

Nitesh Raj Khanal 1 Nov 2, 2022
Manually curated collection of resources for frontend web developers.

Frontend Development Manually curated collection of resources for frontend web developers. You are viewing a browseable version, split by category in

Tim Navrotskyy 36.4k Jan 1, 2023
Frontend of Inhyped.com written in TypeScript and rewritten in ReScript

From TypeScript To Rescript This is an example of Inhyped frontend codebase initially written in TypeScript and then fully rewritten in ReScript. It's

Sergey Potapov 30 Sep 29, 2022
Frontend, contracts, and merkle tree generator for use in quickly scaffolding ERC20 token airdrops.

Merkle Airdrop Starter Quickly bootstrap an ERC20 token airdrop to a Merkle tree of recipients. Steps: Generate Merkle tree of recipients by following

Anish Agnihotri 675 Dec 22, 2022
🌕 Frontend for Mangatsu server Written in TypeScript using Nextjs

?? Frontend for Mangatsu Server (a storage for doujinshi, manga & other collections). Written in TypeScript using Nextjs.

Mangatsu 8 Nov 4, 2022
A Minecraft launcher written in Rust, with an Electron frontend.

RustMine A Minecraft launcher written in Rust, with an Electron frontend. Why? I thought it would be fun to use two of my most familiar languages, Rus

sussyimpostor 1 Oct 16, 2022