Skip to content

Commit 9f21806

Browse files
committed
✨ Update pnpm-lock.yaml with new dependencies and versions, including @react-pdf/renderer and related packages, and enhance README.md with new sections for Open Studio Artifacts and Open Studio Resume, detailing features and goals. Additionally, add sanitizeUnknownStrings and getGreeting utility functions to improve data handling and user experience in the application.
1 parent d06694b commit 9f21806

File tree

3 files changed

+866
-63
lines changed

3 files changed

+866
-63
lines changed

README.md

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Open Studio is an open-source AI ecosystem. ChatHub drives research and leverage verticalized agents like OpenStudio Tube to get the work done for YouTube. More niche AI inbound!
44

5-
## 1. OpenStudio ChatHub
5+
## 1. Open Studio ChatHub
66

77
<p align="center">
88
<img width="160" alt="OpenStudio ChatHub logo" src=".github/screenshots/oschathubhero.png">
@@ -33,7 +33,7 @@ Open Studio is an open-source AI ecosystem. ChatHub drives research and leverage
3333
[![Open Studio Chathub demo](.github/screenshots/oschathubthumbnail.png)](https://youtu.be/KCd_bdnJ1SE?si=xJHksV_YNQrA-Wq2)
3434

3535

36-
## 2. OpenStudio Tube - Work In Progress
36+
## 2. Open Studio Tube - Work In Progress
3737

3838
<p align="center">
3939
<img width="350" alt="OpenStudio Tube logo" src=".github/screenshots/ostubehero.jpeg">
@@ -62,6 +62,47 @@ Drowning in comments? Automate replies, moderation, and approvals—saving you *
6262

6363
[![Open Studio demo](.github/screenshots/ostubethumbnail.webp)](https://youtu.be/Z_2XLXBjqzI?si=yVJXvxlf7YHst9oT)
6464

65+
## 3. **Open Studio Artifacts – AI Marketplace (Work In Progress)**
66+
67+
<p align="center">Create, sell, and use AI tools with ease.</p>
68+
69+
🚀 **AI Tools for Everyone**
70+
71+
A simple platform where AI creators sell their work, and users find the right AI solutions.
72+
73+
### **Core Features:**
74+
🛠️ **No-Code AI Creation** – Build and share AI tools.
75+
💰 **Monetization** – Earn from your AI expertise.
76+
🔍 **AI Marketplace** – Find AI solutions for any need.
77+
📈 **Fair Revenue Sharing** – Transparent and creator-friendly.
78+
**Collaboration** – Work with others and improve AI tools.
79+
80+
🔥 **First Focus: Helping AI Creators**
81+
Create, share, and get paid for AI tools—built for those who make things happen.
82+
83+
💡 **The Goal:** A straightforward marketplace connecting AI creators and users.
84+
85+
## 4. **Open Studio Resume – AI-Powered Resume Builder**
86+
87+
<p align="center">Craft, customize, and optimize resumes effortlessly.</p>
88+
89+
🚀 **Smart Resume Creation Made Simple**
90+
91+
A streamlined platform that helps job seekers build, refine, and tailor resumes with AI assistance.
92+
93+
### **Core Features:**
94+
📝 **Resume Templates** – Start with structured, professional layouts.
95+
🤖 **AI Content Suggestions** – Improve sections with smart recommendations.
96+
🎯 **Job-Specific Customization** – Tailor resumes for each application.
97+
📑 **Cover Letter Generation** – Auto-create matching cover letters.
98+
📄 **PDF Export & Sharing** – Download or share resumes easily.
99+
📊 **Resume Score & Feedback** – Optimize with AI-driven insights.
100+
101+
🔥 **First Focus: AI-Assisted Resume Writing**
102+
Write better resumes with AI-powered suggestions and formatting assistance.
103+
104+
💡 **The Goal:** A simple, effective tool to help anyone create standout resumes.
105+
65106
## Built with
66107

67108
- [Next.js](https://nextjs.org/) - Framework

apps/app/lib/utils.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,3 +425,28 @@ export function convertToUIMessages(
425425
return chatMessages;
426426
}, []);
427427
}
428+
429+
export function sanitizeUnknownStrings<T>(data: T): T {
430+
if (typeof data === 'string') {
431+
return (data === '<UNKNOWN>' ? '' : data) as T;
432+
}
433+
if (Array.isArray(data)) {
434+
return data.map((item) => sanitizeUnknownStrings(item)) as T;
435+
}
436+
if (typeof data === 'object' && data !== null) {
437+
return Object.fromEntries(
438+
Object.entries(data).map(([key, value]) => [
439+
key,
440+
sanitizeUnknownStrings(value),
441+
])
442+
) as T;
443+
}
444+
return data;
445+
}
446+
447+
export function getGreeting() {
448+
const hour = new Date().getHours();
449+
if (hour < 12) return 'Good morning';
450+
if (hour < 17) return 'Good afternoon';
451+
return 'Good evening';
452+
}

0 commit comments

Comments
 (0)