Skip to content

Commit 2ce2d51

Browse files
committed
feat: Update Experience
1 parent 4b89c01 commit 2ce2d51

File tree

6 files changed

+86
-36
lines changed

6 files changed

+86
-36
lines changed

features/cv-page/mocks/resumeData.mock.ts

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,21 +38,29 @@ export const dummyResumeData: ResumeData = {
3838
},
3939
],
4040
projects: [
41+
{
42+
title: 'HR Tech - AI App Teaser & Onboarding Flows',
43+
client: 'Talentguide',
44+
year: '2024',
45+
linkUrl: 'https://talentguide.com',
46+
collaborators: 'Miles Ahead Capital',
47+
description: `Helped Talentguide develop their chart visualisation and build a Teaser + extended customer onboarding flow. Preview the AI tool, sign-up and invite team members, APIs and Handoff from other HR tools. Also worked on other critical infrastructure like integrating Stripe payments and building + sending emails with react-email and Azure Communications.`,
48+
},
4149
{
4250
title: 'Commerce Aggregation App',
4351
client: 'Incubator of a large US retailer',
4452
year: '2023',
4553
linkUrl: '',
4654
collaborators: '',
47-
description: `6mo, NY, Built with Expo, React-native & Next.js, but can't say more sadly`,
55+
description: `6 month-long Mobile App MVP Project, partly executed on premise in the New York HQ. Built with Expo, React-native & Next.js. Aimed at revolutionizing collaborative grocery shopping with a modern UI, multi-modal and household-centric approach. Can't say more, sadly.`,
4856
},
4957
{
5058
title: 'Cancer Companion App',
51-
client: 'My Cancer Companion by Dr. Eric Lim, Thoracic Surgeon',
59+
client: "'My Cancer Companion' by Dr. Eric Lim, Thoracic Surgeon",
5260
year: '2022',
5361
linkUrl: 'https://www.mycancercompanion.com/',
5462
collaborators: '',
55-
description: `My Cancer Companion is an app I helped build providing the best, most up-to-date, and authoritative information for people with lung cancer. Cool features I worked on include Symptom logging (charts), Personalised recommendations, and Appointment management (calendars). Helped build this with Expo, React-Native, and Nest.js in Belgium and London.`,
63+
description: `My Cancer Companion is a Mobile app I helped build to provide the best, most up-to-date, and authoritative information for people with lung cancer. Exciting features I worked on include Symptom logging (charts), Personalised recommendations (content-engine), and Appointment management (calendars). Helped build this with Expo, React-Native, and Nest.js in Belgium and London.`,
5664
},
5765
{
5866
title: 'React renderer for a B2B eCommerce CMS',
@@ -65,15 +73,31 @@ export const dummyResumeData: ResumeData = {
6573
],
6674
sideProjects: [
6775
{
68-
title: 'Aetherspace GREEN stack starter',
76+
title: 'Free GREEN stack starter',
6977
client: 'Github, Open-Source',
7078
year: 'Ongoing',
7179
linkUrl: 'https://github.com/Aetherspace/green-stack-starter-demo#readme',
7280
collaborators: '',
73-
description: `Kickstart your next project with Aetherspace: A Zod & Typescript-first approach to building cross-platform experiences with GraphQL, React-Native, Expo & Next.js, in a write-once way. So far, I've created and maintained this resource over the course of 3 years.`,
81+
description: `Free / Demo version of the FullProduct.dev Universal App Starterkit. A Zod & Typescript-first approach to building cross-platform experiences with GraphQL, React-Native, Expo & Next.js, in a write-once way. So far, I've created and maintained this resource over the course of 3 years.`,
82+
},
83+
{
84+
title: 'FullProduct.dev ⚡️ Universal App Starterkit',
85+
client: 'Aetherspace Digital',
86+
year: 'Ongoing',
87+
linkUrl: 'https://fullproduct.dev',
88+
collaborators: '',
89+
description: `Kickstart your next project with FullProduct.dev: A Zod & Typescript-first approach to building Universal App experiences with GraphQL, React-Native, Expo & Next.js, in a write-once way. Well-documented productisation of my way of working.`,
7490
},
7591
],
7692
writing: [
93+
{
94+
title: 'Zod and the Joy of Single Sources of Truth',
95+
year: '2024',
96+
publisher: 'dev.to',
97+
linkUrl: 'https://dev.to/codinsonn/the-joy-of-single-sources-of-truth-277o',
98+
collaborators: 'Builds upon the wonderful work of Colin Hacks and Zod.dev',
99+
description: `In this article, I'll build up to more advanced use cases of Zod, and how it can be used as a single source of truth for not just types and validation, but any datastructure definition in your entire codebase.`,
100+
},
77101
{
78102
title: 'How to choose cross-platform tech',
79103
year: '2023',
@@ -92,6 +116,14 @@ export const dummyResumeData: ResumeData = {
92116
},
93117
],
94118
speaking: [
119+
{
120+
title: 'Zod and the Joy of Single Sources of Truth',
121+
year: '2024',
122+
event: 'Devs.Ghent (iO)',
123+
location: 'Ghent, Belgium',
124+
linkUrl: 'https://dev.to/codinsonn/the-joy-of-single-sources-of-truth-277o',
125+
description: `A talk about advanced use cases of Zod, and how it can be used as a single source of truth for not just types and validation, but any datastructure definition in your entire codebase.`,
126+
},
95127
{
96128
title: 'Full-Product Universal Apps with Aetherspace',
97129
year: '2023',
@@ -132,8 +164,8 @@ export const dummyResumeData: ResumeData = {
132164
title: 'Full-Product Typescript Engineer',
133165
from: '2022',
134166
to: '2023',
135-
company: 'Bothrs',
136-
location: 'Ghent, Belgium (also: New York & London)',
167+
company: 'Bothrs / Nimble',
168+
location: 'Ghent, Belgium ( + occasional trips to New York, London)',
137169
linkUrl: 'https://www.bothrs.com/',
138170
description: `Built some cool Mobile Apps with Web features using Expo, React-Native, and Next.js here. Often the initial MVP or incubator project was built & validated by our smaller teams, while the client scaled up their team to take over. Included clients in the US, UK, Healthcare, and ECommerce sectors.`,
139171
},
@@ -147,13 +179,13 @@ export const dummyResumeData: ResumeData = {
147179
description: `Worked on a wide variety of projects here. Mostly Front-end work for their in-house ECommerce CMS that powers the likes of Dockx Rental and Denderwood. Aside from that, I also worked on some advanced web-based configurators for Daikin EU here, and even some Mobile apps with React-Native and Expo.`,
148180
},
149181
{
150-
title: 'Back-End, Web & Mobile Developer',
182+
title: 'Back-End + Web + Mobile Developer',
151183
from: '2017',
152-
to: '2016',
184+
to: '2018',
153185
company: 'Tildepost',
154186
location: 'Bredene, Belgium',
155187
linkUrl: '',
156-
description: `As the only engineer for the entire startup, I was building the project for all platforms with Expo, React-Native, and Node.js`,
188+
description: `As the only engineer for the entire startup, I maintained and added core features for all platforms with Expo, React-Native and Node.js`,
157189
},
158190
],
159191
volunteering: [
@@ -167,7 +199,7 @@ export const dummyResumeData: ResumeData = {
167199
description: '',
168200
},
169201
{
170-
title: 'GREEN stack template repo',
202+
title: 'Free GREEN stack template repo',
171203
from: '2020',
172204
to: 'Now',
173205
company: 'Aetherspace Digital',

features/cv-page/resolvers/getResumeDataByUserSlug.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { aetherResolver } from 'aetherspace/utils/serverUtils'
22
import { GetResumeDataByUserSlugDataBridge } from '../schemas/GetResumeDataByUserSlugDataBridge'
33
import { ResumeDataModel } from '../models/ResumeDataModel'
4-
// import { dummyResumeData } from '../mocks/resumeData.mock'
4+
import { dummyResumeData } from '../mocks/resumeData.mock'
55
import { dbConnect } from '@aetherspace/mongoose/utils'
66

77
/** --- getResumeDataByUserSlug ---------------------------------------------------------------- */
@@ -14,16 +14,19 @@ export const getResumeDataByUserSlug = aetherResolver(
1414

1515
// -- Connect --
1616

17-
await dbConnect()
17+
// await dbConnect()
1818

1919
// -- Logic --
2020

21-
const resumeData = await ResumeDataModel.findOne({ slug })
22-
if (!resumeData) throw handleError('Resume data not found', true)
21+
// const resumeData = await ResumeDataModel.findOne({ slug })
22+
// if (!resumeData) throw handleError('Resume data not found', true)
2323

2424
// -- Respond --
2525

26-
return withDefaults(resumeData!.toObject())
26+
// return withDefaults(resumeData!.toObject())
27+
28+
return withDefaults(dummyResumeData)
29+
2730
} catch (err) {
2831
throw handleError(err)
2932
}

features/cv-page/resolvers/upsertResume.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ import { dbConnect } from '@aetherspace/mongoose/utils'
99

1010
const MONGODB_URI = process.env.MONGODB_URI
1111

12+
/* --- Links ----------------------------------------------------------------------------------- */
13+
/* -i- http://localhost:3000/api/resume/codisonn/upsert?authKey=codinsonn-db.aeqqm8l.mongodb.net/codinsonn */
14+
1215
/** --- upsertResume --------------------------------------------------------------------------- */
1316
/** -i- Inserts or updates a resume based on the slug */
1417
export const upsertResume = aetherResolver(

features/links-page/mocks/userBio.mock.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { TUserBio } from '../schemas'
1+
import type { UserBio } from '../schemas/UserBio'
22

3-
export const userBioMock: TUserBio = {
3+
export const userBioMock: UserBio = {
44
slug: 'codinsonn',
55
title: '@codinsonn',
66
titleLink: 'https://www.instagram.com/codinsonn.dev/',
@@ -25,30 +25,30 @@ export const userBioMock: TUserBio = {
2525
},
2626
{
2727
id: '4',
28-
linkUrl: '...',
28+
linkUrl: 'https://fullproduct.dev',
2929
linkIconKey: 'ReactIcon',
3030
},
3131
{
3232
id: '5',
33-
linkUrl: '...',
33+
linkUrl: 'https://codelyfans.myshopify.com',
3434
linkIconKey: 'ShopifyIcon',
3535
},
3636
{
3737
id: '6',
38-
linkUrl: '...',
38+
linkUrl: 'https://www.redbubble.com/people/AetherspaceOne/shop',
3939
linkIconKey: 'RedbubbleIcon',
4040
},
4141
{
4242
id: '7',
43-
linkUrl: '...',
43+
linkUrl: 'https://www.behance.net/ThorrStevens',
4444
linkIconKey: 'BehanceIcon',
4545
},
4646
],
4747
linksInBio: [
4848
{
4949
id: '1',
5050
linkUrl: 'https://www.youtube.com/watch?v=njhgS-erQbo',
51-
linkTitle: 'An intro to Aetherspace and the GREEN stack',
51+
linkTitle: 'Intro to FullProduct.dev and the GREEN stack',
5252
subTitle: 'Recorded conference talk at Newline.gent',
5353
imageUrl: '/img/NewlineTalk.jpeg',
5454
isFeatured: true,

features/links-page/resolvers/getUserBioBySlug.ts

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { GetUserBioBySlugDataBridge } from '../schemas/GetUserBioBySlugDataBridg
33
import { UserBioTable } from '../models/UserBioTable'
44
import { UserIconsTable } from '../models/UserIconsTable'
55
import { LinkInBioTable } from '../models/LinkInBioTable'
6+
import { userBioMock } from '../mocks/userBio.mock'
67

78
/** --- getUserBioBySlug() --------------------------------------------------------------- */
89
/** -i- Fetch all the bio page info for a specific user by their url slug */
@@ -12,19 +13,22 @@ export const getUserBioBySlug = aetherResolver(
1213
// Args
1314
const { slug } = parseArgs(args)
1415

15-
// Fetch bio info from airtable
16-
const [userBio, iconLinks, linksInBio] = await Promise.all([
17-
UserBioTable.aetherQueries.findOne({ slug }),
18-
UserIconsTable.aetherQueries.find({ userSlug: slug }),
19-
LinkInBioTable.aetherQueries.find({ userSlug: slug }),
20-
])
16+
// // Fetch bio info from airtable
17+
// const [userBio, iconLinks, linksInBio] = await Promise.all([
18+
// UserBioTable.aetherQueries.findOne({ slug }),
19+
// UserIconsTable.aetherQueries.find({ userSlug: slug }),
20+
// LinkInBioTable.aetherQueries.find({ userSlug: slug }),
21+
// ])
22+
23+
// // Result
24+
// return withDefaults({
25+
// ...userBio,
26+
// iconLinks,
27+
// linksInBio,
28+
// })
29+
30+
return withDefaults({ ...userBioMock })
2131

22-
// Result
23-
return withDefaults({
24-
...userBio,
25-
iconLinks,
26-
linksInBio,
27-
})
2832
} catch (error) {
2933
// -!- Temporary mock for local offline debugging
3034
// if (process.env.NODE_ENV !== 'production') return userBioMock

features/links-page/screens/BioScreen.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,15 @@ export const BioScreen = (props: BioScreenProps) => {
153153
tw="font-primary-regular text-primary text-sm"
154154
asText
155155
>
156-
Free template repo
156+
Free template
157+
</Link>
158+
<Text tw="font-primary-regular text-primary text-sm">{' / '}</Text>
159+
<Link
160+
href="https://fullproduct.dev"
161+
tw="font-primary-regular text-primary text-sm"
162+
asText
163+
>
164+
Paid Starterkit
157165
</Link>
158166
<Text tw="font-primary-regular text-primary text-sm">{' / '}</Text>
159167
<Link href="/resume" tw="font-primary-black text-primary underline text-sm" asText>

0 commit comments

Comments
 (0)