Git Product home page Git Product logo

eui-event-template's Introduction

Hacktoberfest themed banner for repo

Happy Hacktoberfest!!

I remember my first Hacktoberfest so clearly because I was so intimidated by Git and contributing code to other repos, and I was still VERY early in my coding journey and didn't even know how to code, but enjoyed the experience so much!

Hacktoberfest holds a special place in my heart because it's a great way to get started into coding and comfortable with Github. I'm so excited to finally maintain a repo that I can help others experience the same joy I did!

Want to participate in Hacktoberfest? All you have to do is sign up, and then successfully merge 4 pull requests in the month of October! Check out our contributing guidelines and open issues to participate from this repo!

React + Eui Template for An Event Website

This is a template for an event-based website. The website was created for an event my ERG was hosting (Rainbow Stack Summit), but I decided to make its own repository so others can contribute to it and use it as well!

This is all very much Work In Progress, so if you have any comments or ideas, or want to contribute, feel free to create an issue.

Demo

View a live demo of the site hosted on Vercel

Running Locally

  • Clone the project by running git clone https://github.com/<your-username>/eui-event-template.git in your terminal, or by using the Github Desktop UI

  • Cd to the repo on your local machine - cd eui-event-template

  • Install dependencies by running yarn install

  • Run yarn start to start the project

  • Go to localhost:3000 in your browser to view it!

Note that: If you wish to use the project for your own purposes, you can clone it as mentioned above or check use this template from the top. If you wish to make a contribution to the repository, you will have to fork the repository as well.

Connect Google Sheets with your app

Follow these steps to connect your google sheets file with the app.

  • Create a google sheet
  1. Go to https://docs.google.com/ and create a blank sheet
  2. Add name, title, team, location, shortBio, pronouns, imageLink headers in the sheet (make sure the order of headers is same as in the example sheet provided below).
  3. Populate the sheet with some data.
    ##### Data Schema
    SPEAKERS                                                 SIGN UP
    name : string                                            name  : string
    title: string                                            email : string
    team: string
    location: string
    shortBio: string
    pronouns: string
    imageLink: string (url of hosted image)
    
  4. Change the tab name to "Speakers" (Tab name "Speakers" is case sensitive).

Example sheet: https://docs.google.com/spreadsheets/d/1XgyHXaReTZ3Nq_r7QS18GDvqK_ht010QqnI6PXAnePA/edit?usp=sharing


  • Deploy App Script Web App
  1. Open your google sheet.
  2. Click on Extensions tab.
  3. Click on App Script.

4. Delete all the code from the editor (inside Code.gs file).

        // Get requests
        function doGet(req) {
            if(req.parameters.sheetName == "Speakers") {
                return getSpeakersData()
            } else if(req.parameters.sheetName == 'Talks') {
                return getTalksData()
            }
        }

        // speaker requestHandler
        function getSpeakersData() {
            var doc = SpreadsheetApp.getActiveSpreadsheet()
            var sheet = doc.getSheetByName("Speakers")
            var values = sheet.getDataRange().getValues()

            var output = []
            for(var i=1; i<values.length; i++) {
                var row = {}
                row['name'] = values[i][0]
                row['title'] = values[i][1]
                row['team'] = values[i][2]
                row['location'] = values[i][3]
                row['shortBio'] = values[i][4]
                row['pronouns'] = values[i][5]
                row['imageLink'] = values[i][6]

                output.push(row)
            }

            return ContentService.createTextOutput(JSON.stringify({speakers: output})).setMimeType(ContentService.MimeType.JSON)
        }
        // talk requestHandler
        function getTalksData() {
            var doc = SpreadsheetApp.getActiveSpreadsheet()
            var sheet = doc.getSheetByName("Talks")
            var values = sheet.getDataRange().getValues()

            var output = []
            for(var i=1; i<values.length; i++) {
                var row = {}
                row['date'] = values[i][0]
                row['time'] = values[i][1]
                row['title'] = values[i][2]
                row['description'] = values[i][3]
                row['genre'] = values[i][4]
                row['speaker'] = values[i][5].split(',')
                row['speakersImageLink'] = values[i][6].split(',')
                output.push(row)
            }

            return ContentService.createTextOutput(JSON.stringify({talks: output})).setMimeType(ContentService.MimeType.JSON)
        }
        // post requests
        function doPost(e){
            let action = e.parameter.action
            if(action == "signup"){
                return signUp(e)
            }
        }
        // signup requestHandler
        function signUp(e){
            var doc = SpreadsheetApp.getActiveSpreadsheet()
            var sheet = doc.getSheetByName("signup") // name of your sheet where user details would be saved.
            let user = JSON.parse(e.postData.contents)
            sheet.appendRow([user.name,user.email])
            return ContentService.createTextOutput(JSON.stringify({status: "success", "data": "my-data"})).setMimeType(ContentService.MimeType.JAVASCRIPT);
        }

  1. Paste above code in the Code.gs file.
  2. Click on Deploy button and select New Deployment.

  1. Click on settings icon on select type menu and select web app.

  1. Add Description.
  2. Select Anyone in who has access section and click deploy.
  3. Authorize access. Google might say it's an unverified app and tell you to go back to safety its because the app that you are creating will have access to your sheet data but since you are developing the application so essentially you are accessing your data only, which is totally safe.
  4. Copy the Web URL. Make sure you do not share the Web URL with anyone else because if you do so then that person can access your data.
  • Configure local project
  1. Open project folder, go to src/utilities/env.js
  2. Replace the string webAppUrl with the Web URL you copied.

  1. Refresh the speakers page to see the results.

Contributing

Want to contribute and improve something here? I would love that! Check out thecontributing guidelines, then head to issues and look for open issues. If you need any help or clarification, just comment on there and let me know. Also, feel free to submit your own issues if you have ideas!

UPDATE: I am so excited by how many folks want to contribute to this repo! I'm trying to create new requests to keep up with the demand but if you have any ideas of how you can improve the app, please feel free to open an issue with your recommendations, and I'll be happy to review it and if it aligns, I'll assign it to you!

License

Source code in this repository is covered by (i) a dual license under the Server Side Public License, v 1 and the Elastic License 2.0 or (ii) an Apache License 2.0 compatible license or (iii) solely under the Elastic License 2.0, in each case, as noted in the applicable header. The default throughout the repository is a dual license under the Server Side Public License, v 1 and the Elastic License 2.0, unless the header specifies another license.

eui-event-template's People

Contributors

adsingh14 avatar aloybrancheung avatar arnav-negi avatar arshergon avatar ashwath462 avatar asma-mughal avatar audreymengue avatar ayushk-101 avatar binnieslite avatar bpvcode avatar brandonmcconnell avatar brittanyjoiner15 avatar camillet16 avatar chiragkhatri19 avatar diegoherrer4 avatar divyanshraj0408 avatar domstrozynski avatar ifroghop2worlds avatar krupalitrivedi avatar laxmanbalaraman avatar m1ga avatar mannuel25 avatar maximsamorukov avatar nandanvyas avatar prathamgwari avatar sahilanower avatar satyam1548 avatar shahx95 avatar vaani-pathariya avatar vinitvh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

eui-event-template's Issues

Add social links to footer

Update the footer with icons for Facebook, Twitter, LinkedIn, and Instagram and make them linkable (you can just link to "#" for now), so that if someone wants to use the template, they can include links to their events social profiles

Need a favicon image

Need a new favicon to replace the rainbow image. If we can stay on theme for the identity theft conference that would be awesome!

[BUG] Unwanted horizontal scroll

The problem:

There is some unwanted horizontal scroll due to overflow problem.

Solution in my mind:

This can be simply solved by setting margin and padding as 0 for the body but there are other methods too to solve this issue.

Screenshots:

Screencast from 02-10-22 08!UNITO-UNDERSCORE!34!UNITO-UNDERSCORE!09 AM IST

note: If possible I would like to work on this issue for hacktoberfest :p .

Update the meta data to have a new image and title

Update meta data title, image, and description to have a new image and title that relates to updates on the site "identity theft conference". (Will need for this issue to be completed first but should be finished on Oct 1st.)

You'll find the meta data set in this file: https://github.com/brittanyjoiner15/eui-event-template/blob/main/public/index.html#L5

update the:

  • favicon (thumb print image that is the logo in the nav bar)
  • OG title
  • OG description ("Use React and EUI to create an event or conference website! This is a template with an example."
  • OG image (hero image used in the main event details tab)
  • title ("React and Eui Event Template")
  • description ("Use React and EUI to create an event or conference website! This is a template with an example."

Create a file listing contributors

I'd love to recognize contributors who have PRs merged in this Repo!

Create a new file called contributors.md and make a nice page that shows the usernames of folks who have merged PRs. (You can find all those here.)

Please look at some examples of other repos that do this and help come up with a nice way to make that page that is more than just a bullet point of names. Maybe we want to format in a table? Maybe we link to their profile as well?

BONUS points if you can make it so that the file is updated with the contributors name with each PR request.

Speaker column on Talks tab accepts multiple speakers

Make it so that if there is more than one speaker, both can be displayed and it wraps nicely.

Cheat code: I actually already did this for my repo, and unless the table changes a lot before this issue is tackled, you can probably mostly copy and paste what I did here :)

https://github.com/brittanyjoiner15/rainbowstack-summit/blob/master/src/components/panels/TalksPanel.jsx#L49-L77
and also
https://github.com/brittanyjoiner15/rainbowstack-summit/blob/495dac0ca3eea06b253faa319143d726bb2d7dde/src/components/panels/TalksPanel.jsx#L134

Let me know if you need any help!

As a user, I can update a Google Sheet with speaker info and it reflect on the speaker page

This is bit more of an advanced issue, but it would be really cool to hook up Google Sheet API to create a new card for each row in a spreadsheet tab that has speaker details.

Ideally the spreadsheet has columns for:

  • name:
  • title:
  • team
  • location
  • short bio
  • pronounce
  • image link

And the app is updated to create a EuiCard from each row with that data.

As part of this issue, please update the documentation on the readme for how to run this locally and any necessary steps to configure and hook up your own spreadsheet.

This might also help : https://dev.to/varshithvhegde/easy-way-to-create-your-own-api-for-free-1mbc

Loading state for page content while loading

Most pages in the application do not show any content on the page while loading and simply collapse as if no content is still being processed, even on a relatively fast internet connection. This may confuse users into thinking there is no content to see, who might then leave the page/site before the content is loaded.

In some cases, such as the Talks page, the table does display before the content is ready, however, it shows a placeholder that reads, No items found, which may be even more confusing and inaccurate.

Acceptance criteria

  • Add a loading spinner, where fitting, to indicate that page content is still loading
  • For sections such as the Talks page, either…
  • use a loading spinner on the page, and hide the table altogether, until the data, or lack thereof, is ready to be assessed, or…
  • use placeholder text in place of No items found while the content is still loading to make it clear the data is still loading and not necessarily missing/empty
  • Tech requirement: All of these loading states should be added using React.Suspense.

Create a registration form that sends responses to a Google Sheet

Create a registration form that collects name and email, and send those responses to a Google Sheet.

As part of this, you'll need to update the documentation to explain how someone using this repo as a template can then hook up their own GoogleApi and Google Sheet to this.

[Improvement suggestion] As a user, I can click the navbar brand logo img and text to navigate back to the home page

Hi @brittanyjoiner15,

I'm new to open-source contributions and hoping to participate in my first hackathon.

As the title suggest, I would like to propose a very simple improvement to UX to the navigation feature of your website based on what I am seeing on the production sample link. This feature would involve user feedback (i.e. a cursor change when hovering the navbar brand), in hopes of improving UX.

Implementation Proposal:
I am thinking of adding cursor: pointer in the CSS and also making clicking the text navigate back to the homepage (in addition to the already implemented logo img).

I havn't taken a look at the codebase yet but I would probably use react-dom or just using an <a> tag.

Please let me know what you think about this and if it would be possible as contribution for hacktoberfest.

As a user, I can create an issue to request a feature request from a template

Create an issue template so that when someone comes to this repo to file a bug or request a feature, they can choose from an issue template for a feature request.

Please use the checklist from the items in the [contributing guidelines](https://github.com/brittanyjoiner15/eui-event/blob/main/contributing.
md) to create sections of an issue for each bullet point. Ie, the bug template should have checklist / sections for submitting:

  • Describe the ideal state of what the feature would do in one sentence. (Use language like "As a user, I can ....")
  • Explain in more detail what that might look like.
  • Add a link to any examples that you can share that demonstrate this feature.
  • Bonus points if you can also explain how to implement this!

Here's the docs explaining how to do it: https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/manually-creating-a-single-issue-template-for-your-repository

Create a sponsor section

Add a section above the footer that accepts multiple logos (you can add fake ones in there for the time being) that would be able to hold the sponsors of the event. Something like this:

This should be displayed on every page and accept 5 - 10 logos.

Create docs for adding mixpanel for tracking events on the app

Create a page under docs explaining how to set up site reporting with MixPanel. You can see some examples of how I did this with Rainbow Stack summit.

Note - we don't want to actually add Mixpanel to this template, but want to layout docs for exactly how someone might do that if they want to track things for their events. For instance, if they want to track how many people fill out a form, visit a page, click a button, etc.

Ideally the docs will be a single file added to the docs folder called mixpanel.md and will reference the Mixpanel docs, and give a step by step guide for what needs to be set up on MixPanel, where to initialize it, and how to create events, including some examples.

Update to typescript

Not really a story for the user, but more for the developer. Ideally we could update this app to be in Typescript instead of Javascript, but it's a low priority and a slightly ambitious task.

Add Issue Templates

I'd suggest we have issues templates.

  • A custom issue template
  • A feature template (this comes in handy since we now have a research notes that tracks technologies/features to be added)

If it's a good suggestion, I'd like to add them.

As a user, I can create an issue to file a bug from a template

Create an issue template so that when someone comes to this repo to file a bug or request a feature, they can choose from an issue template for a new bug.

Please use the checklist from the items in the contributing guidelines to create sections of an issue for each bullet point. Ie, the bug template should have checklist / sections for submitting:

  • Explain the bug and WHERE you saw it (the page, section on the page)
  • Also explain what you expected to happen
  • Describe how we can reproduce it
  • Note your browser and device
  • Bonus points if you can share a screenshot or recording!

Here's the docs explaining how to do it: https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/manually-creating-a-single-issue-template-for-your-repository

Change the text in the footer

Instead of referencing Elastic and rainbowstack ERG, change this text to be something else. Have a little fun with it and make it something fictional that goes along with our theme of our speakers

Add LICENSE.md

While not required to contribute, it would be good to know what bounds this project will be used and if it can/can't be used in other projects.

Translate key text in app to French

After we have a i18n available, then we'll want to be able to translate key parts of the app. If you speak French and would feel comfortable translating the key text, that would be great!

This is what we need translated:

  • tab titles
    • Event Details
    • Speakers
    • Talks
    • Recordings
    • FAQs/Frequently Asked Questions
  • Calendar Button text: Save the {date} session
  • Second button text:
    • Sign up for updates
    • Join the slack group
  • Button on talks page text: Show times in EDT and Show times in Local

Translate key text in app to Spanish

After we have a i18n available, then we'll want to be able to translate key parts of the app. If you speak Spanish and would feel comfortable translating the key text, that would be great!

This is what we need translated:

  • tab titles
    • Event Details
    • Speakers
    • Talks
    • Recordings
    • FAQs/Frequently Asked Questions
  • Calendar Button text: Save the {date} session
  • Second button text:
    • Sign up for updates
    • Join the slack group
  • Button on talks page text: Show times in EDT and Show times in Local

Review contributing guidelines

Review Contributing Guidelines and fork a repo. Make suggestions to the docs about troubleshooting any issues you come across, or clarify any language that doesn't make sense. (Feel free to comment on here and ask for clarification on something, then take what you learn and update the markdown file).

Translate key text in app to German

After we have a i18n available, then we'll want to be able to translate key parts of the app. If you speak German and would feel comfortable translating the key text, that would be great!

This is what we need translated:

  • tab titles
    • Event Details
    • Speakers
    • Talks
    • Recordings
    • FAQs/Frequently Asked Questions
  • Calendar Button text: Save the {date} session
  • Second button text:
    • Sign up for updates
    • Join the slack group
  • Button on talks page text: Show times in EDT and Show times in Local

As a user, I can update a Google Sheet with talk info

Similar to #19, but for the talks and not the speakers. Instead of cards, each row on the Google Sheet will create a new row in the EuiTable.

The spreadsheet columns should contain:

  • session date and time (in standard ISO timestamp format)
  • talk title
  • talk description
  • genre (one string)
  • speaker

And the app is updated to create an EuiTable with items from the Google Sheet.

As part of this issue, please update the documentation on the readme for how to run this locally and any necessary steps to configure and hook up your own spreadsheet.

Also, it is a requirement to keep the formatting styles, ie, still able to change the date/time, badges for genre, and speaker avatars and name shown in the speaker column.

This might also help : https://dev.to/varshithvhegde/easy-way-to-create-your-own-api-for-free-1mbc

Add an FAQ tab

Create a tab with some lorem ipsum text with FAQs about the conference/event.

Upgrade Eui to latest version

Need to upgrade Eui to latest version which has several improvements, and fixes a bug with local development that does not consistently render icons.

@brandonmcconnell would you like this one since you pointed it out in another PR?

Add Attractive Buttons

I want to add some attractive buttons using HTML, CSS, and javascript.
By adding some attractive and animated buttons website look more attractive and by hover effect oh button , it looks more user interactive .

As a user, I can access the different tabs by route

Add a router so that going to /talks displays the talks component, /speaker, etc and clicking on the logo takes you back home.

I'm leaning towards React Router, or Hook Router, but if you know of another alternative, I'm open to it!

Join the Slack Group!

Hey brittanyjoiner15 , do we have the slack group available? If yes , then we can redirect users to the slack group link, where they can join in immediately!

I am interested to work on this

[bug] Website has a scroll bar on the X axis

While checking the website I noticed that the website - body overflows on the x axis, and there is no need to overflow since there isn't extra content on the right side and it makes the UI worse.

An easy solution would be adding a overflow-x: hidden; on the body tag, or you can find the element which is expanding the website and fix that!

If you want the problem fixed through css I'm happy to do it, but if you want to do it through React then I'm sorry I still don't know that framework. :)

Video of the issue:

Screen.Recording.2022-09-27.at.17.13.18.mov

[HELP] Add Code of Conduct to Repo

Adding a Code of Conduct to the repo would help contributors know that a standard of conduct is set and that they should feel more welcome to contribute.

Create a md file to track research

Sometimes we'll have tasks where want to research certain things, like new technology we might want to add in the app.

Create a file that we can organize any notes from these research separately from actually taking actions on the research.

Spend a few minutes doing a little research to see if anyone else is doing something like this and maybe get some ideas for how to structure it, but if there are no other ideas, simply create a file called research-notes.md and add it to the docs folder.

When hovering on a speaker card it enlarges and makes a shadow

When hovering on a card for a speaker, the card is enlarged and there is a shadow on the element.

Alternatively, you could pick something from here: https://blog.avada.io/css/card-hover-effects

Basically just need some kind of animation that would make the card become more obvious when people are hovering over it, but nothing too dramatic.

If you take this issue, please comment with some ideas of what you'd like to implement here, and maybe a demo or example before implementing! (I recognize the description might not be as clear as it could be.)

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.