Giter Site home page Giter Site logo

exokomodo / edu Goto Github PK

View Code? Open in Web Editor NEW
4.0 2.0 1.0 2.4 MB

Educational website for bootcamp grads, CS college grads, and anyone else interested in learning software craftsmanship

Home Page: https://edu.exokomodo.com/

License: MIT License

HTML 7.38% CSS 1.09% JavaScript 0.92% TypeScript 15.99% Vue 34.75% F# 37.67% Dockerfile 0.54% Shell 1.66%
education programming dotnet7 fsharp giraffe

edu's Introduction

ExoKomodo

Website

Important Links

Setup

Download .NET and install the appropriate .NET version.

Setup the project

dotnet restore

Run the front-end client in a terminal window of its own (2 options):

dotnet watch run --project src/Client
cd src/Client
dotnet watch run

Run the back-end server, if you need it, in a terminal window of its own (2 options):

dotnet watch run --project src/Server
cd src/Server
dotnet watch run

Creating a new user

TODO: Description

Special Blazor File Types

  • Razor Pages [.razor]
    • Superset of HTML
    • Supports inline code directives and HTML generation
    • Supports component-based front-end patterns
    • Can include all the C# or CSS code for a page as well
  • Code-Behind fIles [.razor.cs] (Optional)
    • A page in Blazor is represented by one class in the end compilation, so a Code-Behind file can contain a partial class for the Razor page, containing the code that would have been present in a @code block
    • Allows definition/redefinition of page lifecycle hooks such as OnInitialized, OnAfterRender, etc.
  • Scoped CSS file [.razor.css] (Optional)
    • Contains CSS that is scoped to the page/component that it represents
    • Isolates the CSS definitions for a page/component to the associated page/component
    • Should be preferred over using .css files whenever possible, importing .css files that are needed

edu's People

Contributors

brandonapol avatar jamesaorson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

brandonapol

edu's Issues

[BUG] CORS not working for local development

Bug

What is wrong?

When doing local development, the server has no CORS enabled, which prevents the frontend from accessing the server's data

How can I, the developer, reproduce this?

Run the server and client locally. Go to http://localhost:5173/blog and watch it fail!

Acceptance Criteria

Local development, as well as the deployed site, should be enabled in CORS

[FEATURE] Issue creation button in Edu

Feature Request

Description

Add a button on each Edu page (probably in the header/navbar) that routes users to the issue creation page for the repo

This will allow users to complain or request improvements as they think of them, while using the site

Acceptance Criteria

A button/link is present in every page that lets me, the user, complain my heart out

[BUG] Minimize github workflow branches

Bug

What is wrong?

Pushes cause two runs to happen at once

How can I, the developer, reproduce this?

Push a commit to any branch

Acceptance Criteria

A push should only cause one run, once a PR is opened, and no runs until a PR is opened

[CONTENT] Advanced Git

Content Improvement

TODO

Supplemental attachments?

No response

Acceptance Criteria

TODO

[BUG] Blog html files not included in build

Bug

What is wrong?

The HTML files that represent blog content are not copied on build, so a 404 is encountered when trying to go to a blog's page

How can I, the developer, reproduce this?

See an empty page at: https://edu.exokomodo.com/blog/1
Or a failed API call at https://services.edu.exokomodo.com/api/v1/blog/1

Acceptance Criteria

The following XML must be added to the server.fsproj file

<Content Include="Data\**\*.html">
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

[FEATURE] Add instructions to the root api route

Feature Request

Description

Currently, when I go to https://services.edu.exokomodo.com/api/v1, what I get back is this:

Screenshot 2023-03-29 at 7 30 28 AM

This is better than most APIs which return effectively nothing when going to the base URLs, but this is a lost opportunity to guide the developer to the actual API methods

The base API URL and the v1 API URL should provide guided instruction to the existing API routes

Acceptance Criteria

Create a simple HTML response that explains how and where the API user can actually interact with the API

Something like

<h1>
  Hey buddy, the API methods are over yonder!
</h1>
<div>
  <p>To check out these API methods, you can go to the GET routes in your browser, but for anything else, use a tool like <a href="https://www.postman.com/">Postman</a> or <a href="https://curl.se/">curl</a></p>
  <ul>
    <li>
      <a href="https://services.edu.exokomodo.com/api/v1/blog">/api/v1/blog</a>
    </li>
    <li>
      <a href="https://services.edu.exokomodo.com/api/v1/blog/[id]">/api/v1/blog/[id]</a>
    </li>
  </ul>
</div>

[FEATURE] Add git-driven CMS

Feature Request

Description

Adding blogs should be done via PRs, and served by the backend for scalability.

A blog could be hosted by the frontend and just downloaded directly, but this will have some inherent slowness and makes it harder in the future to move blogs to an external database.

Acceptance Criteria

Store blog posts in the backend, serving them up from the backend server to the frontend

[CONTENT] AWS

Content Improvement

TODO

Supplemental attachments?

No response

Acceptance Criteria

TODO

[FEATURE] Multiple mimetypes per API method

Discussed in #67

Originally posted by JamesOrson April 5, 2023
As of #38, some API methods support both HTML and JSON. JSON will give you a normal API data response, while HTML will return an interactive web page for browsing and understanding the API.

I propose setting this up for every API method, where any time an API method is created, it will require an HTML API spec. This will act as a way of enforcing documentation for API methods, and improve general usability of Edu's APIs.

On top of this, since multiple mimetypes are already being registered, we might as well expand the data methods to support the following additional data formats:

  • YAML (serialize data as YAML rather than JSON)
  • XML (serialize data as XML rather than JSON)

[FEATURE] Add CODEOWNERS

Feature Request

Description

Add a CODEOWNERS file referencing the ExoKomodo/edu team

Acceptance Criteria

Add a CODEOWNERS file referencing the ExoKomodo/edu team

fix landing page content

Started as a joke but now if people are going to look at it it needs to be clarified and fixed - no more lorem

PR documentation

Requesting instructions on how to participate and contribute via GitHub in author's preferred methodology

Add blog page service

Blog service should allow for easy creation of new blogs under different data file paths

Use the blog design from ExoKomodo as a basis, but we can make it more succinct

[BUG] Blog API is not allowing "Accept: */*

Bug

What is wrong?

The backend API is not interpreting the Accept: */* header as "give me the default"
Screen Shot 2023-04-05 at 9 37 11 PM

GET /api/v1/blog/1 HTTP/2
Host: services.edu.exokomodo.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/112.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://edu.exokomodo.com/
Origin: https://edu.exokomodo.com
Connection: keep-alive
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
Pragma: no-cache
Cache-Control: no-cache

How can I, the developer, reproduce this?

Go to https://edu.exokomodo.com/blog/1 and notice how nothing renders

Acceptance Criteria

The blog post should work because the backend interprets / as being the default application/json

[CONTENT] Type Theory

Content Improvement

TODO

Supplemental attachments?

No response

Acceptance Criteria

TODO

[BUG] my bug is named CORS and I want to squish him

Bug

What is wrong?

CORS error when running locally

How can I, the developer, reproduce this?

Made a branch off of main, ran server and client (dotnet run and npm run dev, respectively) and upon visiting the /blogs endpoint of the Vue app I am receiving CORS errors. It seems there is also a type error that is preventing the blog from rendering at all. I 'fixed' this by creating local 'dummy' data, but this is API-free data, so not really useful.

Acceptance Criteria

Data pulls and blogs display from DB via backend
Screen Shot 2023-04-07 at 7 59 21 PM

[CONTENT] Deep Dive JS

Content Improvement

TODO

Supplemental attachments?

No response

Acceptance Criteria

TODO

[BUG] Navbar rendering on mobile

Bug

What is wrong?

Navbar rendering on mobile is either not displaying navigation links at all, OR they are getting pushed below the bottom of the navbar

How can I, the developer, reproduce this?

iPhone XR viewing of the website/landing page in portrait mode has no menu options; landscape mode results in buttons pushed down

Acceptance Criteria

Visible buttons on portrait mode OR menu dropdown option; landscape mode fits buttons.

[CONTENT] Set Theory

Content Improvement

Set theory is necessary to take your problem solving to a next level

Set theory also rears its head every so often in unexpected places, but having familiarity with sets and their concepts will make it easier for you to recognize their patterns in the wild

Supplemental attachments?

No response

Acceptance Criteria

Create the guts of the content covering set theory

  • Written down content
  • Source links
  • Code examples
  • Instruction on how to look up information on sets

[FEATURE] Limit CD for main branch

Feature Request

Description

CD for the main branch should only deploy what has changed. For example, if the client/ directory changes, a new deployment of the UI is warranted. If the server/ directory is changed, a new deployment of the backend is warranted. The opposite is note true, so a change to the client does not require a deployment change.

Acceptance Criteria

Still test the CI build for non-main branches, but limit CD based on which files change, using Github's triggers: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore

[FEATURE] Add content issue category

Feature Request

Description

Be able to submit issues tied to content creation tickets

Acceptance Criteria

Be able to create a content issue similar to how I create a bug report

[BUG] DigitalOcean deploys old commits

Bug

What is wrong?

Digital ocean does not always check for a latest commit when updating the app spec. When setting deploy_on_push to true, DO will pick up on new commits.

https://docs.digitalocean.com/products/app-platform/reference/app-spec/#ref-services-github-deploy_on_push

How can I, the developer, reproduce this?

Run the CI pipeline and watch the DO app magically stay on an old commit

Acceptance Criteria

Each time a commit makes its way into main, it should update the DO app to the newest commit

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.