Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rebuild Website #58

Merged
merged 48 commits into from
Dec 30, 2019
Merged

Rebuild Website #58

merged 48 commits into from
Dec 30, 2019

Conversation

fgauna12
Copy link
Contributor

@fgauna12 fgauna12 commented Dec 26, 2019

Overview

Rebuilt the website using the Sessionize API to show speakers, the schedule, and an agenda view.
The website is rebuilt using Razor Pages and .NET Core 3.0.*

Why? Because there's not much to rebuild if we lean on Sessionize for the majority of the hard pieces.

👀 You can see the website at https://azapp-codecampster-prod-001.azurewebsites.net/.

🎉 - I took heavy inspiration from Seattle's Code Camp.

Major Changes

  • Created a new ASP.NET Core 3.0 web project (CodeCampster.Web) that contains the new website. Left the legacy one alone.
  • CI that builds and validates pull requests like this one
  • Because there's a new project, it was easy to add Azure AD B2C Integration **
  • CI/CD pipeline to Docker Hub and Azure Web App for Container. Deploy to production upon pull-request merge to master
  • Bootstrap 4 front-end with simple Razor Pages
  • Infrastructure as Code deployments using ARM Templates
  • Found a way to decorate the Sessionize views, smart grids, and other components with a custom button so that we can extend it and allow our attendees to favorite a session. (i.e. See CustomJavascript.js)

CI/CD

We're publishing to Docker Hub under a new code camp organization. This is a public container registry so that anyone can pull down the website without having to authenticate. Once the container is uploaded, it is then deployed to Azure using an ARM Template.

I created a blog post explaining roughly how it comes together.

Sessionize

Using my own account and test data, I used the various components that they provide to surface event information. I think they did a great job making the information easy to see and responsive.

There's no API keys since everything is read-only using their API. So I just committed the URLs provided by them to as constants (see src/Web/CodeCampster.Web/Sessionize.cs)

Assumptions/Caveats

❓ - In the past, we have maybe discussed Sessionize and rate limiting. I could not find anything on the topic. Also, Seattle's Code Camp uses the components from Sessionize directly as well.
❓ - We would have to change one thing in the planning of Code Camp - defining tracks. If we lean on Sessionize, we ought to define a custom field that we make speakers fill out about which track they feel their session should belong to. This would put work on our end to make sure we pre-define the tracks before the event. If we don't make this change, this means we might to write more custom code to make our process work with Sessionize. I don't like the sound of that 🙃

TODO - What's Next?

  1. Making things pretty. Come up with a color scheme, tighten the layout, tighten the messaging.
  2. Change the sessionize data to Orlando Code Camp's.
  3. Configure DNS
  4. Configure DNS and Azure AD B2C
  5. Make login page pretty
  6. Switch over accounts to Santosh. Like Docker Hub.
  7. Build an API for mobile?

Footnotes
* tried .NET Core 3.1 but the hosted build agents don't have that runtime yet
** still need to go back and configure the right return url after we add a proper domain name configuration

@desinole
Copy link
Contributor

Let me know when you want me to review

@fgauna12 fgauna12 marked this pull request as ready for review December 29, 2019 23:16
@fgauna12 fgauna12 self-assigned this Dec 30, 2019
Copy link
Contributor

@desinole desinole left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Q. In the past, we have maybe discussed Sessionize and rate limiting. I could not find anything on the topic. Also, Seattle's Code Camp uses the components from Sessionize directly as well.
A. It does mention on the api docs that they do some caching (Troubleshooting) but also recommends that we do
https://sessionize.com/api-documentation

Q. We would have to change one thing in the planning of Code Camp - defining tracks. If we lean on Sessionize, we ought to define a custom field that we make speakers fill out about which track they feel their session should belong to. This would put work on our end to make sure we pre-define the tracks before the event. If we don't make this change, this means we might to write more custom code to make our process work with Sessionize. I don't like the sound of that 🙃
A. We can do the tracks manually instead of custom code.

Q. TODO - What's Next?
-Making things pretty. Come up with a color scheme, tighten the layout, tighten the messaging.
-Change the sessionize data to Orlando Code Camp's.
-Configure DNS
-Configure DNS and Azure AD B2C
-Make login page pretty
-Switch over accounts to Santosh. Like Docker Hub.
-Build an API for mobile?

A. Let's make this into actionable items

@desinole desinole merged commit 9b3321f into master Dec 30, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants