diff --git a/components/Card.tsx b/components/Card.tsx
index b8a0b02..e460eec 100644
--- a/components/Card.tsx
+++ b/components/Card.tsx
@@ -2,20 +2,29 @@ import { ComponentChildren, JSX } from "preact";
type CardProps = {
title: string;
- content?: string | JSX.Element;
+ content?: string | JSX.Element | (string | JSX.Element)[];
link?: string;
link_text?: string;
children?: ComponentChildren;
};
-const Card = (
- { title, content, link, link_text = "", children }: CardProps,
-) => {
+const Card = ({
+ title,
+ content,
+ link,
+ link_text = "",
+ children,
+}: CardProps) => {
return (
{title}
- {content &&
{content}
}
+ {content && !Array.isArray(content) && (
+
{content}
+ )}
+ {content &&
+ Array.isArray(content) &&
+ content.map((para) =>
{para}
)}
{children}
{link && (
diff --git a/deno.json b/deno.json
index cffd001..784bfe5 100644
--- a/deno.json
+++ b/deno.json
@@ -7,22 +7,13 @@
"preview": "deno run -A main.ts",
"update": "deno run -A -r https://fresh.deno.dev/update ."
},
- "lint": {
- "rules": {
- "tags": [
- "fresh",
- "recommended"
- ]
- }
- },
- "exclude": [
- "**/_fresh/*"
- ],
+ "lint": { "rules": { "tags": ["fresh", "recommended"] } },
+ "exclude": ["**/_fresh/*"],
"imports": {
- "$fresh/": "https://deno.land/x/fresh@1.5.2/",
+ "$fresh/": "https://deno.land/x/fresh@1.6.3/",
"zod": "https://deno.land/x/zod@v3.22.4/mod.ts",
- "preact": "https://esm.sh/preact@10.18.1",
- "preact/": "https://esm.sh/preact@10.18.1/",
+ "preact": "https://esm.sh/preact@10.19.2",
+ "preact/": "https://esm.sh/preact@10.19.2/",
"preact-render-to-string": "https://esm.sh/*preact-render-to-string@6.2.2",
"@preact/signals": "https://esm.sh/*@preact/signals@1.2.1",
"@preact/signals-core": "https://esm.sh/*@preact/signals-core@1.5.0",
@@ -32,8 +23,5 @@
"tabler_icons/": "https://deno.land/x/tabler_icons_tsx@0.0.3/tsx/",
"$std/": "https://deno.land/std@0.193.0/"
},
- "compilerOptions": {
- "jsx": "react-jsx",
- "jsxImportSource": "preact"
- }
+ "compilerOptions": { "jsx": "react-jsx", "jsxImportSource": "preact" }
}
diff --git a/fresh.gen.ts b/fresh.gen.ts
index 3e5acd3..6ed7c9e 100644
--- a/fresh.gen.ts
+++ b/fresh.gen.ts
@@ -2,27 +2,32 @@
// This file SHOULD be checked into source version control.
// This file is automatically updated during development when running `dev.ts`.
-import * as $0 from "./routes/_404.tsx";
-import * as $1 from "./routes/_app.tsx";
-import * as $2 from "./routes/index.tsx";
-import * as $3 from "./routes/projects.tsx";
-import * as $$0 from "./islands/Footer.tsx";
-import * as $$1 from "./islands/Header.tsx";
-import * as $$2 from "./islands/IssuesList.tsx";
+import * as $_404 from "./routes/_404.tsx";
+import * as $_app from "./routes/_app.tsx";
+import * as $about from "./routes/about.tsx";
+import * as $contribute from "./routes/contribute.tsx";
+import * as $index from "./routes/index.tsx";
+import * as $projects from "./routes/projects.tsx";
+import * as $Footer from "./islands/Footer.tsx";
+import * as $Header from "./islands/Header.tsx";
+import * as $IssuesList from "./islands/IssuesList.tsx";
+import { type Manifest } from "$fresh/server.ts";
const manifest = {
routes: {
- "./routes/_404.tsx": $0,
- "./routes/_app.tsx": $1,
- "./routes/index.tsx": $2,
- "./routes/projects.tsx": $3,
+ "./routes/_404.tsx": $_404,
+ "./routes/_app.tsx": $_app,
+ "./routes/about.tsx": $about,
+ "./routes/contribute.tsx": $contribute,
+ "./routes/index.tsx": $index,
+ "./routes/projects.tsx": $projects,
},
islands: {
- "./islands/Footer.tsx": $$0,
- "./islands/Header.tsx": $$1,
- "./islands/IssuesList.tsx": $$2,
+ "./islands/Footer.tsx": $Footer,
+ "./islands/Header.tsx": $Header,
+ "./islands/IssuesList.tsx": $IssuesList,
},
baseUrl: import.meta.url,
-};
+} satisfies Manifest;
export default manifest;
diff --git a/routes/_app.tsx b/routes/_app.tsx
index a57f637..586c875 100644
--- a/routes/_app.tsx
+++ b/routes/_app.tsx
@@ -1,15 +1,16 @@
-import { AppProps } from "$fresh/server.ts";
+import { PageProps } from "$fresh/server.ts";
import Header from "../islands/Header.tsx";
import Footer from "../islands/Footer.tsx";
const nav = [
- { name: "Home", href: "/" },
+ { name: "About", href: "/about" },
+ { name: "Contribute", href: "/contribute" },
{ name: "Projects", href: "/projects" },
{ name: "Speak", href: "/speak" },
{ name: "Donate", href: "https://devict.org/support" },
];
-export default function App({ Component, route }: AppProps) {
+export default function App({ Component, route }: PageProps) {
return (
diff --git a/routes/about.tsx b/routes/about.tsx
new file mode 100644
index 0000000..071d392
--- /dev/null
+++ b/routes/about.tsx
@@ -0,0 +1,72 @@
+import Card from "../components/Card.tsx";
+
+export default function About() {
+ return (
+
+
+
+ Wichita's software developer community
+
+
+ devICT is a volunteer-run community aiming to{" "}
+ educate, empower and connect software developers and
+ technologists in the Wichita, KS area.
+
+
+
+ Whether you are new to the field, or an experienced engineer, devICT
+ offers multiple avenues for you to engage, contribute, and grow your
+ skillset as a technologist.
+
+
+
+
+ {[
+ {
+ title: `Who we are`,
+ content: [
+ `We are a group of individuals who have a common interest in
+ software development.`,
+
+ `Our skill levels vary greatly, from complete beginners to
+ seasoned veterans. We welcome anyone with a curiosity for
+ programming.`,
+
+ `We strictly enforce a Code of Conduct to provide all of our
+ members a safe and inclusive environment.`,
+ ],
+ },
+ {
+ title: `What we do`,
+ content: [
+ `Members of devICT have one common goal: to be better at what
+ we do. Our events and services are aimed at achieving that.`,
+
+ `To make that happen we have monthly events that are both
+ social and educational.`,
+
+ `We also have an active Slack community which serves as a place
+ to connect and discuss with others in the community.`,
+ ],
+ },
+ {
+ title: `Get involved!`,
+ content: [
+ `Most of the time we are hanging out in Slack. To join, just
+ fill out this form.`,
+
+ `Primarily, be sure to become a member on the Meetup page. Then
+ you will receive notifications for upcoming events.`,
+
+ `You could also give a talk! Share the knowledge! We enjoy
+ learning about any development related topics. Contact a board
+ member if you are interested!`,
+ ],
+ },
+ ].map((card) => (
+
+ ))}
+
+
+ );
+}
diff --git a/routes/contribute.tsx b/routes/contribute.tsx
new file mode 100644
index 0000000..31d8011
--- /dev/null
+++ b/routes/contribute.tsx
@@ -0,0 +1,149 @@
+import { assert } from "$std/_util/asserts.ts";
+import Card from "../components/Card.tsx";
+import { fetchGitHubContributors } from "../lib/github.ts";
+
+const DEVICT_REPOS: string[] = [
+ "devict/job-board",
+ "devict/devict.org",
+ "devict/keeper",
+ "devict/hacktoberfest",
+ "devict/help",
+];
+
+export default async function Home() {
+ const ghToken = Deno.env.get("GITHUB_TOKEN");
+ assert(ghToken);
+
+ const contributors = await fetchGitHubContributors(ghToken, DEVICT_REPOS);
+
+ return (
+
+
+
+ Wichita's software developer community
+
+
+ devICT is a volunteer-run community aiming to{" "}
+ educate, empower and connect software developers and
+ technologists in the Wichita, KS area.
+
+
+
+ Whether you are new to the field, or an experienced engineer, devICT
+ offers multiple avenues for you to engage, contribute, and grow your
+ skillset as a technologist.
+
+
+
+
Why
+
+ {[
+ {
+ title: `Build Skills`,
+ content: `Working on real-world projects exposes you to new technologies and best practices.`,
+ },
+ {
+ title: `Portfolio Building`,
+ content: `Your contributions get recorded on GitHub, providing tangible proof of your skills.`,
+ },
+ {
+ title: `Learning and Networking`,
+ content: `Interacting with the community offers immense learning opportunities and widens your professional network.`,
+ },
+ {
+ title: `Giving Back`,
+ content: `By contributing, you help grow the local tech scene and create a richer environment for everyone involved.`,
+ },
+ ].map((card) => (
+
+ ))}
+
+
+
How
+
+ {[
+ {
+ title: `Join the Conversation`,
+ content: (
+ <>
+ Join us{" "}
+
+ in Slack
+ {" "}
+ and jump into the conversation! Share what you're working on,
+ asking questions, and help others.
+ >
+ ),
+ link: "https://slack.devict.org/",
+ link_text: "Sign Up",
+ },
+ {
+ title: "Contribute to a Project",
+ content: (
+ <>
+ Browse our{" "}
+
+ active projects
+
+ , find an issue that interests you, and jump right in! Plenty of
+ ways to contribute with or without coding.
+ >
+ ),
+ link: "/projects",
+ link_text: "Get Coding",
+ },
+ {
+ title: `Give a Talk or Workshop`,
+ content: `Share your knowledge and experience in a lightning talk or more comprehensive sessions.`,
+ link: "https://speak.devict.org/",
+ link_text: "Sign Up",
+ external: true,
+ },
+ {
+ title: `Financial Support`,
+ content: `Donations help us keep the lights on and fund community events. Every bit counts!`,
+ },
+ ].map((card) => (
+
+ ))}
+
+
Contributors
+
+
+ {contributors.map((contributor) => (
+
+
+
+ ))}
+
+
+ );
+}
+
+type ContributorsProps = {
+ login: string;
+ avatar_url: string;
+ html_url: string;
+};
+
+function Contributor({ login, avatar_url, html_url }: ContributorsProps) {
+ return (
+
+
+

+
{login}
+
+
+ );
+}
diff --git a/routes/index.tsx b/routes/index.tsx
index 5a1a67e..1b91fff 100644
--- a/routes/index.tsx
+++ b/routes/index.tsx
@@ -1,171 +1,24 @@
-import { assert } from "$std/_util/asserts.ts";
-import { JSX } from "preact";
-import Card from "../components/Card.tsx";
-import { fetchGitHubContributors, fetchGitHubMembers } from "../lib/github.ts";
-
-const DEVICT_REPOS: string[] = [
- "devict/job-board",
- "devict/devict.org",
- "devict/keeper",
- "devict/hacktoberfest",
- "devict/help",
-];
-
-export default async function Home() {
- const ghToken = Deno.env.get("GITHUB_TOKEN");
- assert(ghToken);
-
- const contributors = await fetchGitHubContributors(ghToken, DEVICT_REPOS);
+// import Card from "../components/Card.tsx";
+export default function Home() {
return (
-
+
+ Wichita's software developer community
+
+
devICT is a volunteer-run community aiming to{" "}
- educate, empower and connect{" "}
- software developers and technologists in the{" "}
- Wichita, KS area.
+ educate, empower and connect software developers and
+ technologists in the Wichita, KS area.
-
- Whether you are new to coding or an experienced developer, devICT
- offers multiple avenues for you to engage, contribute, and grow.
+
+ Whether you are new to the field, or an experienced engineer, devICT
+ offers multiple avenues for you to engage, contribute, and grow your
+ skillset as a technologist.
-
-
Why Contribute?
-
- {[
- {
- title: `Build Skills`,
- content:
- `Working on real-world projects exposes you to new technologies and best practices.`,
- },
- {
- title: `Portfolio Building`,
- content:
- `Your contributions get recorded on GitHub, providing tangible proof of your skills.`,
- },
- {
- title: `Learning and Networking`,
- content:
- `Interacting with the community offers immense learning opportunities and widens your professional network.`,
- },
- {
- title: `Giving Back`,
- content:
- `By contributing, you help grow the local tech scene and create a richer environment for everyone involved.`,
- },
- ].map((card) => )}
-
-
-
How You Can Contribute
-
- {[
- {
- title: `Join the Conversation`,
- content: (
- <>
- Join us{" "}
-
- in Slack
- {" "}
- and jump into the conversation! Share what you're working on,
- asking questions, and help others.
- >
- ),
- link: "https://slack.devict.org/",
- link_text: "Sign Up",
- },
- {
- title: "Contribute with Code",
- content: (
- <>
- Browse our{" "}
-
- active projects
- , find an issue that interests you, and jump right in!
- >
- ),
- link: "/projects",
- link_text: "Get Coding",
- },
- {
- title: "Contribute without Code",
- content: (
- <>
- Help us with documentation, design, or outreach efforts. Add
-
- clarity by asking questions on{" "}
-
- existing issues
- , or contribute your ideas by filing new ones.
- >
- ),
- link: "/projects",
- link_text: "Contribute",
- },
- {
- title: `Give a Talk or Workshop`,
- content:
- `Share your knowledge and experience in a lightning talk or more comprehensive sessions.`,
- link: "https://speak.devict.org/",
- link_text: "Sign Up",
- external: true,
- },
- {
- title: `Financial Support`,
- content:
- `Donations help us keep the lights on and fund community events. Every bit counts!`,
- },
- {
- title: `Unique Contributions`,
- content:
- `Have a unique idea or skillset? We're all ears! Reach out to propose new ways to contribute.`,
- },
- ].map((card) =>
)}
-
-
Contributors
-
-
- {contributors.map((contributor) => (
-
-
-
- ))}
-
);
}
-
-type ContributorsProps = {
- login: string;
- avatar_url: string;
- html_url: string;
-};
-
-function Contributor({ login, avatar_url, html_url }: ContributorsProps) {
- return (
-
-
-

-
{login}
-
-
- );
-}