React Mastery Workshop

Course Design for Small Group React Mastery Workshop

Objective:
This course is designed to help junior developers and self-learners build a strong foundation in React by focusing on key concepts such as React Hooks, state management, and full-stack integration. While the course emphasizes frontend development, students will also work with a simple Node.js backend to gain a full-stack perspective, better preparing them for the job market. By the end of the course, students will be able to independently build complete projects using React and related technologies.

Remark:
Although this course aims to improve technical skills and understanding, it is focused on skill enhancement and does not guarantee immediate job placement, especially given the current economic challenges.


Course Format


Course Goals

  1. Reinforce Core React Concepts: Focus on lifecycle, hooks, state management, and shared state across multiple components and pages.

  2. Introduction to Advanced Patterns: Context API, Redux, caching, and performance optimization.

  3. Frontend-Backend Integration: Build a complete project that uses both React on the frontend and Node.js on the backend.

  4. Skill Enhancement (Not Job Guarantee): While the course will improve students' technical skills, it is not designed to directly help them find a job. Instead, it focuses on making them more confident and capable developers, which will help them in the job market.


Class Format

Each class is designed to be interactive and hands-on, consisting of the following components:


Course Outline

You can view this section after agreeing the terms and conditions.


Pricing

We understand that everyone’s financial situation is different, especially in the current economic climate. To make this group-based React Mastery Workshop accessible while maintaining a high-quality learning experience, we offer a tiered pricing structure based on your employment status.

This course is designed to provide valuable, hands-on learning in a small group format (4–8 students), making it more affordable than 1-on-1 teaching, without compromising on the quality of instruction.


Pricing Tiers

  1. For Students with Full-Time Jobs:

    • Price per class: $600 (HKD 200/hr)
    • Total for 6-week course: $3,600
    • Bonus for full upfront payment: 3 hours of free 1-on-1 support (valued at $1,050)
  2. For Students with Part-Time Jobs:

    • Price per class: $450 (HKD 150/hr)
    • Total for 6-week course: $2,700
    • Bonus for full upfront payment: 2 hours of free 1-on-1 support (valued at $800)
  3. For Unemployed Students:

    • Price per class: $360 (HKD 120/hr)
    • Total for 6-week course: $2,160
    • Bonus for full upfront payment: 1 hour of free 1-on-1 support (valued at $500)

Payment Options


Why This Pricing Model?

Notes

For registration, please contact Beeno Tung

Source Code of course/small-group-react-mastery-workshop.tsx
(import statements omitted for simplicity, click to expand)
import { o } from '../../jsx/jsx.js'
import { Routes } from '../../routes.js'
import { title } from '../../../config.js'
import Style from '../../components/style.js'
import { Context } from '../../context.js'
import { Link } from '../../components/router.js'
import { getAuthUser } from '../../auth/user.js'
import { Locale, isPreferZh } from '../../components/locale.js'
import { readFileSync } from 'fs'
import { markdownToHtml } from '../../format/markdown.js'
import { Raw } from '../../components/raw.js'
import { nodeToHTML } from '../../jsx/html.js'
import { toRouteUrl } from '../../../url.js'
import terms from '../terms.js'
import SourceCode from '../../components/source-code.js'
let pageTitleEn = 'React Mastery Workshop'
let pageTitleZh = 'React 精進工作坊'

let style = Style(/* css */ `
#SmallGroupReactMasteryWorkshop hr {
  border-color: rgba(0,0,0,0.2);
}
`)

async function loadNote(file: string) {
  let markdown = readFileSync(file).toString()
  let html = await markdownToHtml(markdown)
  return html
}

let courseEn = await loadNote('notes/react-course-en.md')
let courseZh = await loadNote('notes/react-course-zh-hk.md')

let outlineEn = await loadNote('notes/react-course-outline-en.md')
let outlineZh = await loadNote('notes/react-course-outline-zh-hk.md')

let loginMessageEn = nodeToHTML(
  <>
    <h3>Course Outline</h3>
    <p>
      You can view this section after agreeing the{' '}
      <Link href={toRouteUrl(terms.routes, '/terms')}>
        terms and conditions
      </Link>
      .
    </p>
  </>,
  { type: 'static' },
)
let loginMessageZh = nodeToHTML(
  <>
    <h3>課程大綱</h3>
    <p>
      同意
      <Link href={toRouteUrl(terms.routes, '/terms')}>條款及細則</Link>
      後,便可以查看此部分。
    </p>
  </>,
  { type: 'static' },
)

let hasAgreeLocale = (
  <Locale
    en={Raw(courseEn.replaceAll('[[outline.md]]', outlineEn))}
    zh={Raw(courseZh.replaceAll('[[outline.md]]', outlineZh))}
  />
)

let notAgreeLocale = (
  <Locale
    en={Raw(courseEn.replaceAll('[[outline.md]]', loginMessageEn))}
    zh={Raw(courseZh.replaceAll('[[outline.md]]', loginMessageZh))}
  />
)

function Main(attrs: {}, context: Context) {
  let user = getAuthUser(context)
  let hasAgree = user?.agree_time
  return (
    <>
      {style}
      <div id="SmallGroupReactMasteryWorkshop">
        <h1>
          <Locale en={pageTitleEn} zh={pageTitleZh} />
        </h1>
        {hasAgree ? hasAgreeLocale : notAgreeLocale}
        <p style="font-weight: bold">
          <Locale en="For registration, please contact" zh="報名請聯絡" />{' '}
          <a target="_blank" href="https://beeno-tung.surge.sh/">
            Beeno Tung
          </a>
        </p>
      </div>
      <SourceCode page="course/small-group-react-mastery-workshop.tsx" />
    </>
  )
}

let routes = {
  '/course/small-group-react-mastery-workshop': {
    menuText: <Locale en={pageTitleEn} zh={pageTitleZh} />,
    resolve(context) {
      let zh = isPreferZh(context)
      return {
        title: title(zh ? pageTitleZh : pageTitleEn),
        description: zh
          ? '為期6週的小組React精通工作坊,專為初級開發者及自學者設計。學習React Hooks、狀態管理及全棧集成,並通過實操項目掌握技能。課程設有按工作狀況而定的多層次收費結構,並提供免費的一對一支援。'
          : '6-week Small Group React Mastery Workshop designed for junior developers and self-learners. Learn React Hooks, state management, and full-stack integration with hands-on projects in a small group setting. Affordable tiered pricing based on employment status, with options for free 1-on-1 support.',
        node: <Main />,
      }
    },
  },
} satisfies Routes

export default { routes }