Giter VIP home page Giter VIP logo

frontendv2's People

Contributors

avsomers25 avatar bhivam avatar dchaudhari0811 avatar kevinmonisit avatar poojakedia avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

frontendv2's Issues

Make Schedule on Landing Page Pull from API

As a visitor, I want to see the LIVE schedule pulled directly from the API instead of a hardcoded version so that I'm up to date.

image

Important Information

The goal is converting data from one form to another.

The API endpoint: https://github.com/HackRU/lcs/wiki/LCS-API-Endpoints#dayof-events

THE GOAL

Create a function that converts the following content:

{
  "kind": "calendar#event",
  "etag": etag,
  "id": string,
  "status": string,
  "htmlLink": string,
  "created": datetime,
  "updated": datetime,
  "summary": string,
  "description": string,
  "location": string,
  "colorId": string,
  "creator": {
    "id": string,
    "email": string,
    "displayName": string,
    "self": boolean
  },
  "organizer": {
    "id": string,
    "email": string,
    "displayName": string,
    "self": boolean
  },
  "start": {
    "date": date,
    "dateTime": datetime,
    "timeZone": string
  },
  "end": {
    "date": date,
    "dateTime": datetime,
    "timeZone": string
  },
  "endTimeUnspecified": boolean,
  "recurrence": [
    string
  ],
  "recurringEventId": string,
  "originalStartTime": {
    "date": date,
    "dateTime": datetime,
    "timeZone": string
  },
..., etc

to this:

image

The Events content looks like this: https://developers.google.com/calendar/api/v3/reference/events#resource

Note: only use what is relevant from the payload to create the schedule info

You can call this function convertGoogleCalToSchedule or whatever you want. This will take place in data.ts. Implement however you like. Please pull from the main branch.

Have common section title component

image image image

Perhaps like

function SectionTitle(title: string) {
   return <>..... {title} .....</>
}

You can code this in codepen if that's easier and then implement later

/waiver endpoint

The exists a card in the page.tsx file in the dashboard folder, in the top right of the page, where there is a file upload input for the waiver

in order to get to the /dashboard page, it will redirect you to /login the email is [email protected] and the password is test, it won't redirect you but it will then allow you to go to /dashboard

this input, along with the register button should be wrapped in a form, similar to how the card below is wrapped in a form
this form should have some form of validation, which prevents the register button from being submitted unless a waiver is uploaded

once there is a waiver, you should be able to click the register button and it will trigger some function in data.ts, which is in the lib folder this function should then call two function, GetWaiverInfo and UploadWaiver, and handle the response from them

these function are already implement in js in the old frontend repository, which you can find under the HACKRU github. And should be created in the frontendv2 repo in the action.ts file, similar to how the other endpoint functions were implemented in action.ts

In summary, what you are creating is a form that takes a waiver file as a required input, and then on submitting of the form uploads the waiver If you have any question just message Andrew on discord and I'll be happy to help you out!

Make Login look good

The current login page looks like this
Login
this isn't great and should be updated to be more inline with the theming across the website, currently the login page is only implemented on the branch 7-create-a-hacker-dashboard

Add star-like triangle animated particles!

image

We could use the previous implementation.. .it's just that we might need some flag to disable it because it becomes kinda difficult to inspect element because there are so many divs floating around and it gets a bit laggy.

Perhaps, use a transaprent canvas? is that even a thing? probably not

Make Sponsors Section on Landing Page Pull from API

As a visitor, I want to see the LIVE version of Sponsors pulled directly from the API instead of a hardcoded version so that I'm up to date.

image

Important Information

What information do you need? Check out the backend API routes: https://github.com/HackRU/lcs/wiki/LCS-API-Endpoints

Is this enough? Look into pulling images from an API for Next.js projects. What optimizations are used? Streaming? Lazy loading? Your implementation and research will be used for all the other images on the website.

You should consider using /app/lib/data.ts.

Goal

Copy and paste implementation of the sponsors to the landing page. No need for styling or making it pretty. Just getting images on there is the most important bit.

Discuss here what you think we should do.

Make the animals float

Copy CSS from last hackru.... however i tried that and it doesn't work.

The component Next.js provides is a little weird. Not a priority

Add clickable buttons to the cup

this task..... lokey might be hard. i wonder how this would even work?

i think we would have to have a set of fixed dimensions for the cup for each breakpoint so that button placement is predictacble

image

Create Mock Data in Data.ts to be consumed by Dashboards

The frontend components, dashboard and landing page, need to consume data via React Server Components. There exists a data.ts file that lays it out.

What information from Profile.js should be included? What are the most important bits of it? We can also have Ashirth join in this discussion as well.

Consider the following diagram.

IMG_7AE7E1543C29-1

Add Hero Content to Hero Section

image

A super super super basic version. That correctly re-aligns with smaller window widths (mobile, desktop, laptop, nintendo 3DS)

Different Dashboards for Different Users

As a hacker/admin/organizer, I want to see a dashboard that's meant for me when I go to <base URL>/dashboard.

image

What does this mean to you? What's the best way of implementing this? Perhaps there's some sort of state that determines whats on the screen based on user role?

We can discuss in the comments of this Issue if you want. Most important thing is to make this very very minimal for now

Create a Hacker Dashboard

As a hacker/participant, I want to see the information I inputted when signing up (see the user object), modify that information, and see my registration status.

Dashboards Type Roadmap

Hacker: <--- what we are working on
Modify OWN user object form
Check registration status (from user object form)
QR Code (later thing, but will be pretty easy... generating QR based on email I think)

Organizer:
See a list of user information from DB
Scan QR Code

Director:
See a list of users AND be able to write to DB
Scan QR code

Specifications:

This is how the user is stored in the MongoDB instance.

    doc = { #event is the JSON passed in with all the parameters.
        "email": u_email, # this field must be here.
        "role": { #we enforce that the user is a hacker.
            "hacker": True,
            "volunteer": False,
            "judge": False,
            "sponsor": False,
            "mentor": False,
            "organizer": False,
            "director": False
        },
        "votes": 0,
        "password": password, #this is mandatory and will always be hashed.
        "github": event.get("github", ''),
        "major": event.get("major", ''),
        "short_answer": event.get("short_answer", ''),
        "shirt_size": event.get("shirt_size", ''),
        "first_name": event.get("first_name", ''),
        "last_name": event.get("last_name", ''),
        "dietary_restrictions": event.get("dietary_restrictions", ''),
        "special_needs": event.get("special_needs", ''),
        "date_of_birth": event.get("date_of_birth", ''),
        "school": event.get("school", "Rutgers University"),
        "grad_year": event.get("grad_year", ''),
        "gender": event.get("gender", ''),
        "registration_status": event.get("registration_status", "waitlist" if not is_not_day_of else "unregistered"),
        "level_of_study": event.get("level_of_study", ""),
        "mlh": mlh, #we know this, depending on how the function is called.
        "day_of":{
            "checkIn": False
        }
    }

Ideally, the dashboard will consume this data by referencing code from data.ts. To begin, the first iteration should just be mock data. That is, when fetching information regarding the user when accessing the database, a hard-coded in-memory instance of the user object is returned.

The dashboard will reflect different states based on the role of the user. Note: No need to style or make things pretty. The dashboard themselves can just be text, such as:

Personal Info of {{user's role}}:
Email: {{user email}}
GitHub: {{github email}}

You can then designate dashboard designs and form components, to yourselves or to other people if you need help.
Dashboard should be accessed from localhost:3000/dashboard.

Steps

  1. Create a dashboard that displays information (this information is a hard-coded in-memory object)
  2. Create a form that allows you to write to this information (please look into actions.ts and use form validation using zod. Examples of form validation via zod are seen in actions.ts.)
    2a. Please read https://github.com/HackRU/lcs/wiki/Using-LCS#the-user-object

Points of Interest

https://github.com/HackRU/lcs/wiki/Using-LCS

Diagrams

IMG_7B1EDC0EEAEE-1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.