Giter Site home page Giter Site logo

tamu-datathon-org / portal Goto Github PK

View Code? Open in Web Editor NEW
5.0 5.0 2.0 5.23 MB

Shows activities and events for TAMU Datathon

Home Page: https://dev.tamudatathon.com/events/

License: MIT License

JavaScript 4.15% TypeScript 90.47% SCSS 5.38%
nextjs vercel now-sh react typescript

portal's People

Contributors

aditya-pethe avatar allysonmking avatar danabreo avatar dependabot[bot] avatar geooot avatar jacksebastian17 avatar jaesunpk avatar joshuajung01 avatar josiahcoad avatar phulsechinmay avatar s1nthesis avatar samarthdave avatar tamu-datathon avatar tatiaris avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

portal's Issues

Create a Nav component

This is the navbar thing in the Figma document.

For now:

  • Add the "Home" "About" "Sponsors" links from Giga bowser (they all point to /#about etc)
  • Up for discussion!
  • Profile Dropdown: Add a right-justified thing that shows the logged in user email (and allow them to log out) (THIS IS ONLY UI PART)
    • If #6 is done bonus points for wiring it up using the hook

Schedule Page

image

The schedule page will be served by portal instead of gigabowser. It should show events, deadlines, etc. This issue can be tackled by multiple people if it needs to, but communication should be strong.

  • Show the events from the event page in date order.
  • Add a yaml spec that lets us define "non-event" events (like devpost due) so it shows up on this page as well. It should let us specify links as well
  • Add a filter option to let people select/deselect "My Schedule" vs "Competition Deadlines" vs "Events"

Create Page, Set, and Activity APIs

Create APIs that give a list of pages, a list of Sets for a given page, and a detail endpoint that returns all needed data for the Activity Detail Page

The detail endpoint should have all properties for both zoom and youtube live scenarios.

Create Card Component (basic UI) and Collapsable Set component.

image

  • Card component based on Figma document

  • Card component should have support for the "Starts in 15min" indicator

  • Collapsable Set

    • On mobile, it should let them scroll through cards horizontally (look at the sponsor's section on mobile to see what I mean)
      Example Mobile Viewport:

image

  • See if you can use CSS grid to use the gutter spacing thing (optional you can stick with flexbox if you want)

  • Card and Collapsable Should be mostly stateless (at least changes when props change)

API that creates AttendedEvents and then redirects to mediaUrl for an Activity

Basically this is the endpoint that does the tracking for joining a session /events/api/join/[activityId].

The flow:

  • User clicks Join button, it goes to /events/api/join/[activityId]
  • In the API it sends request to gatekeeper to add an AttendedEvent for that user and some EventId
  • If the user is not logged in (no cookie, or invalid cookie) then redirect to login page with an ?r=/events/api/join/[activityId]
    • The auth check should be a middleware
  • Afterwards sends redirect to whatever the activities mediaUrl is.

Tasks:

  • Make auth check middleware
  • Make API
  • Add event ID as a field to activity markdown files

Make UI for Activity Page

image

If activities mediaType is the livestream one it should look like the left, if it is a meeting it should look like the right.

Josiah wanted a card that shows info on the speaker in the right column (it should look roughly like this except it needs the persons name and profile picture as well and should be pretty!):
image

Tasks:

  • Figure out how to render the markdown to HTML and place it in the react tree (bonus points if you use mdx). The markdown should be rendered in the content container part (Where it says
    "TAMU Datathon": Opening Ceremony and below)
    • The markdown should allow us to write html as well

Figure out structure for Activities YAML

  • Activities will be stored in markdown files with a YAML front-matter
  • The YAML will have all necessary metadata to describe the activity.
  • The markdown body would describe the description content (that shows up in the Activity Detail Page)

Integrate the SASS

Currently the whole bootstrap SCSS is imported in _app.tsx:

import "bootstrap/scss/bootstrap.scss";

It should ideally be a custom SCSS with our colors and fonts etc.

import "../styles/custom.scss";

Also change the theme in _app.tsx to let us reference colors in styled-components:

// TODO: add our colors and such
const theme = {
  colors: {
    primary: "#0070f3",
  },
};

UI for adding events to the schedule.

UI for adding events to the schedule. It's a popover that says the action done and also includes other actions to add to calendars. Please use normal bootstrap dialogs and font awesome icons, don't take the screenshot design too seriously

Backend Implementation: #66

image
image

  • UI for action
  • Wire up with backend API to add the event to users schedule
  • Make sure button say the right thing if they already added this event to the schedule

Add to "Schedule" Button

Instead of mark me interested, make a button drop down that lets people add the event to their calendar
The dropdown should have these calendar services for options:

  • Google Calendar
  • Other calendar (downloads .ics file for event)

The calendar event should have a link to the event as well

Figure out a structure for Page and Set config YAML files

  • Create a schema (some example YAML files) that has everything we need to describe the pages and "Sets"
  • Look into adding options to affect ordering (without having us manually order things)
    • Example: allow us to say that this set should show the Activities sorted by "up next in time"?
    • How do we handle past activities?

Make APIs and infrastructure for "adding Events to people's schedules"

  • Figure out a free/cheap database to host on (Firebase, mongo, etc)
  • Create a service class that holds methods that will do the database calls
  • Create a method that adds a document to a collection that says that a specific user has added this event to their schedule
  • Create a method that queries for scheduled events for a specific userAuthId
  • Create a method that removes an event from a users schedule

The database structure should be similar to AttendedEvents.

Remove prop-types from project

Since we're already using Typescript Interfaces, using prop-types seems redundant and is causing a lot of linting errors. I'll start this once #51 is merged

Change the Nav to be consistent (part 2)

image

The final Nav will have 5 links:

  • Home (/) Home Page
  • Events (/events) View events during the event
  • Schedule (/schedule) The generic schedule of key events (basically the opening ceremony and when devpost opens)
  • Challenges (/challenges) A list of company challenges
  • Apply (/apply) A link to Obos

Change the nav in portal to have the same items as the list above.

There will be a ticket in Gigabowser to make pages that handle /schedule and /challenges

Integrate Set functions to tab pages.

For every tab, it should show the tabs that belong to that page (according to the YAML files).
Make some more dummy yaml files for sets and activities to make things look good

Also link the cards to /events/activities/<activity_id> using next/link and a tags

Create the "tab" page UI

image

It does not need to be dynamic, it just should have dummy data. Remember to set the with meta tags and such

Also dont have too many constants (for colors) in your styled-components and use em for spacing whenever you can

Call to Action to join slack on the activity pages

image

Add a card below the presenter card that tells the person that they should join the slack. Also, we are adding a field to the activity YAML that says what slack channel this event has discussions in. If that is specified, show the "Check out this channel for discussions on this event: #data-science-start-here" text.

The wording is open for discussion.

  • Extra points if you can make the channel a link

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.