again stuff
This commit is contained in:
parent
40c1d0b0a2
commit
fe788fb0d1
@ -3,7 +3,7 @@ title: Multi-tenant knowledge base website based on Google APIs
|
||||
goal: Create a modern multi-tenant web app that lets users use their Google Drive as a knowledge base
|
||||
role: Design and implement the web app
|
||||
date: Jul 29, 2023 - Nov 5, 2023
|
||||
z: 1
|
||||
z: 5
|
||||
---
|
||||
|
||||
<details>
|
||||
@ -40,6 +40,3 @@ This project aims to be a Google Drive frontend. It uses the Google APIs to fetc
|
||||
|
||||
|
||||
It supports Google Docs, Google Sheets, Google Slides, PDFs and regular files.
|
||||
|
||||
|
||||
|
||||
|
@ -1,8 +1,11 @@
|
||||
---
|
||||
title: Wells Fargo Open Banking APIs integration
|
||||
goal:
|
||||
role:
|
||||
goal: Integrate the API so that customers can use their Wells Fargo credit card to put down-payments on US orders
|
||||
role: Plan, design and implement the integration according to the Wells Fargo specifications
|
||||
date: Feb, 2021 - Aug, 2021
|
||||
z: 3
|
||||
z: 1
|
||||
draft: true
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
1
new.ts
1
new.ts
@ -30,4 +30,3 @@ if (fs.existsSync(filePath)) {
|
||||
}
|
||||
|
||||
fs.writeFileSync(filePath, meta(), { flag: "w+" })
|
||||
|
||||
|
@ -6,6 +6,7 @@ import styles from "./content.module.css"
|
||||
import Image from "next/image";
|
||||
import rehypeRaw from "rehype-raw";
|
||||
import rehypeHighlight from "rehype-highlight";
|
||||
import { notFound } from "next/navigation";
|
||||
|
||||
type Params = {
|
||||
slug: string[]
|
||||
@ -23,10 +24,12 @@ export default function Content({ params }: Props) {
|
||||
const imgSize = 1024;
|
||||
const { data, content } = getContent(params.slug);
|
||||
|
||||
const title = () =>
|
||||
<span className="text-3xl">
|
||||
{data.title}
|
||||
</span>
|
||||
if (data.draft) {
|
||||
notFound()
|
||||
}
|
||||
|
||||
const title = () => <span className="text-3xl">{data.title}</span>
|
||||
|
||||
const goal = () =>
|
||||
data.goal ?
|
||||
(
|
||||
@ -35,7 +38,8 @@ export default function Content({ params }: Props) {
|
||||
{data.goal}
|
||||
</div>
|
||||
) :
|
||||
""
|
||||
"";
|
||||
|
||||
const role = () =>
|
||||
data.role ?
|
||||
(
|
||||
@ -44,7 +48,9 @@ export default function Content({ params }: Props) {
|
||||
{data.role}
|
||||
</div>
|
||||
) :
|
||||
""
|
||||
"";
|
||||
|
||||
const date = () => data.date ? (<span>{data.date}</span>) : ""
|
||||
|
||||
const ctnt = () =>
|
||||
<Markdown
|
||||
@ -70,6 +76,7 @@ export default function Content({ params }: Props) {
|
||||
{title()}
|
||||
{goal()}
|
||||
{role()}
|
||||
{date()}
|
||||
</div>
|
||||
<div className="w-3/4 m-auto">
|
||||
{ctnt()}
|
||||
|
@ -1,11 +1,9 @@
|
||||
import { GrayMatterFile } from "gray-matter";
|
||||
import Link from "next/link";
|
||||
import { getCases } from "../lib/content";
|
||||
|
||||
const cases: GrayMatterFile<string>[] = getCases()
|
||||
const Cases = () =>
|
||||
<div className="p-20 w-3/4 mx-auto flex flex-col gap-4">
|
||||
{cases.filter(c => !c.data.draft).sort(c => c.data.z).map((c) => c.data).map((d) =>
|
||||
{getCases().filter(c => !c.data.draft).sort(c => Number(c.data.z)).reverse().map((c) => c.data).map((d) =>
|
||||
<div key={d.slug} className="w-full h-max flex justify-center">
|
||||
<Link className="btn flex flex-col w-full text-center" href={d.slug}>
|
||||
<span className="text-lg px-6">{d.title}</span>
|
||||
|
@ -17,4 +17,3 @@ svg {
|
||||
.btn {
|
||||
@apply bg-gray-900 text-gray-300 hover:bg-gray-700 hover:text-white rounded-md px-3 py-2 text-sm font-medium data-[selected=true]:bg-gray-600
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user