V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  xiaohanyu  ›  全部回复第 1 页 / 共 13 页
回复总数  243
1  2  3  4  5  6  7  8  9  10 ... 13  
resume builder 这种产品,我去年系统的做了一次全面的调研,包括国内和海外共 25 个竞品,开源和商业的都有: https://www.douban.com/group/topic/308381238/

供参考哈。
"Loved by 2282 Job Seekers" 这种看上去就有点一眼假的感觉……
作为同行( https://ppresume.com),忍不住过来说两句哈。

1. 付费方式,简历产品采用订阅制,我个人认为是不太合适的,写/更新简历并不是一个用户经常会做的事情,我咨询过我的一些用户,100% 对简历产品用订阅制都是比较反感的。你想一下,如果你用了某个简历产品,这个月写完简历,然后找到了工作工作一两年,期间你也不会去更新简历,但是简历产品一直按月扣钱,你感觉舒服么?当然你可以手动取消订阅,但是思维模式上还是会觉得别扭的。我去年上线 pricing plan 时的一些想法,也包括同类竞品的一些调研: https://blog.ppresume.com/posts/introducing-the-pricing-plan

2. 简历排版,这个也是一个大话题了,恕我直言哈,目前基于 HTML/CSS 的排版是做不出顶尖的排版效果的。排版其实有非常多细节的东西要考量,多语言混合排版是一个很大的坑,HTML/CSS 在这方面并没有很好的解决方案。具体可以看我写的关于排版引擎的文章: https://blog.ppresume.com/posts/zh-cn/on-typesetting-engines ,还有我写的排版指南: https://docs.ppresume.com/guide 。LaTeX 排版的一些样章可以看这里: https://ppresume.com/gallery ,单纯的 HTML/CSS 或者 AI 其实还是很难做到这种顶尖的排版的。

3. 冷启动,如果你本身不是 KOL ,冷启动其实是每个产品都会碰到的问题,但是底线还是保持真诚吧,尽量不要取巧,后续如果有用户,可以把真实用户评价发上来,别去碰“刷单”、“刷榜”这些类似的取巧手段吧。
@xiaohanyu 看到了这里的回复。

https://v2ex.com/t/874714?p=1

```
@hahastudio 根据我的了解,一般来说字体开发用的是 mac ,用的是 fontlab ;我的是 windows ,推荐用 fontcreator(收费)/fontforge(开源),ttx 只是我用来开源用的。一般来说开源用的是 UFO3 或者 glyphs 这种格式的,但是 ttx 又不是不算开源(
```

很好,很好
看上去非常不错!

请教一下,制作/微调字体一般会用到哪些工具呢?有没有一些入门的资料或者教程之类的呀?
@monosolo1on1 谢谢!
技术上的事情不说了,有基础经验的程序员想学基本上都能学得会。

说几个营销和财税法方面的难点吧。

营销:
1. 提交导航站,除了 producthunt 打榜,别的导航站流量基本都比较差,自己分不到多少流量,而 producthunt 打榜本身又需要很多技巧 + 流程 + 人脉
2. 社交网络,个人的话,如果是个素人,起号会很慢;如果是官方机构号,恐怕维护成本也不小吧
3. reddit:大部分高流量的版块都有 no self promotion 的规则,直接发推广的话大概率封版或者封号
4. blog/SEO ,太慢,而且得写好多篇才慢慢有些效果,ahrefs 的一个参考数据,大部分在 Google 上排名前几的网页,需要 2-3 年才可以,https://ahrefs.com/blog/how-long-does-it-take-to-rank/
5. 国内的各种“私域”:微信公众号/小红书这种禁止外链的就不多说了吧
6. 邮件营销:冷邮件一来大概率会被 spam ,二来现在数据合规性的要求越来越高,没有 user consent 直接批量发推广邮件应该是不合规的,GDPR 这种;而经营邮件列表来获得 user consent 本身就是一个 full time job
7. v2ex:你看看现在多少做垃圾站的已经把 V2EX 当成外链农场了?你能发,别人也能发,这种外链质量和引流都不高的
8. KOL:大部分都要钱吧,ruanyifeng 老师的 weekly 应该是少有的免费收录的,但是流量也会衰减,过了一两个月后基本上也就没啥流量了

支付:
1. 如果不是 app 产品( iOS 的渠道太好,抽成 30% 也是有道理的),以个人身份来收款在各种方面都会受到比较严格的限制/“歧视”还有风险
2. 大陆居民搞海外支付有很多财、税、法方面的事情要了解
3. Stripe 基本上需要海外公司的实体,维护成本不低(估计可能要 5-10k 人民币),而且 stripe 接通本身还有一些坑: https://v2ex.com/t/1073328#reply19
4. Paddle 我了解默认不支持没有支付流水的新产品接通,LemonSqueezy 目前应该还是不支付国内的用户付款
5. Sales Tax 还有别的一些 Tax 也是很麻烦的事情,当然如果你走到了这一步,说明你的产品已经有些收入了,congrats

都是泪哈哈,慎重入行。
个人感受:如果你自己没有流量渠道,marketing 的难度比想象中要大很多。

另外就是法务 + 支付方面的事情也需要耗费很多精力和时间。
22 年 12 月开始做,23 年 9 月份上线初版产品,24 年 10 月份上线 pricing plan ,这几个月刚刚有一点点收入,还是很难的。

产品: https://ppresume.com
62 天前
回复了 oldcai 创建的主题 Stripe Stripe 怎样收税比较简单?
除了切换成 MoR 这种,没什么特别好的办法。

网上有人说这种小 SaaS 除了在自己所在的国家 jurisdication 交交 sales tax ,别的可以不用管,有风险,但是不用 care 太多。
62 天前
回复了 Cola98 创建的主题 程序员 nextjs 正确使用方式
@superhot

我的项目架构 ( https://ppresume.com) 大概是这样的:

- ppresume
- packages/common
- packages/api
- packages/client

```sh
$ ls -l packages package.json pnpm-workspace.yaml pnpm-lock.yaml
-rw-r--r-- 1 hanyu staff 1485 Jan 14 21:09 package.json
-rw-r--r-- 1 hanyu staff 744184 Dec 30 10:49 pnpm-lock.yaml
-rw-r--r-- 1 hanyu staff 27 Jan 22 2024 pnpm-workspace.yaml

packages:
total 0
drwxr-xr-x 16 hanyu staff 512 Jan 14 21:09 api
drwxr-xr-x 24 hanyu staff 768 Jan 14 21:09 client
drwxr-xr-x 12 hanyu staff 384 Jan 14 21:09 common
```

- api: 后端 API
- client: 前端 next.js 实现
- common: 前后端共享的 data model/schema validation/utils 等等,不依赖 node.js 系统 API ,所以可以同时跑在两端上。

回复你的问题:

1. tsconfig 我没有特别配置过,common package 的 tsconfig:

```json
{
"compilerOptions": {
"esModuleInterop": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"moduleResolution": "node",
"resolveJsonModule": true,

"declaration": true,
"declarationMap": true,
"sourceMap": true,
"types": ["node", "jest"],

"importHelpers": true,
"composite": true,
"target": "es5",

"rootDir": "src",
"outDir": "dist",

"baseUrl": "."
},

"include": ["**/*.ts", "**/*.json"]
}
```

2. 把 common package 当成一个单独的 npm/pnpm 包引入 api/client ,不需要用嵌套路径。npm/pnpm/yarn 都有相应的 workspace 特性,我最开始用的是 yarn ,后来转到了 pnpm ,参考: https://pnpm.io/workspaces

我的 pnpm-workspace 配置:

```
packages:
- 'packages/*'
```

顶层 `package.json` 配置:

```
{
"name": "ppresume",
"private": true,
"version": "0.7.0",
"dependencies": {
"concurrently": "^8.2.1",
"husky": "^8.0.2",
"lint-staged": "^13.1.0",
"prettier": "^2.8.1"
},
"devDependencies": {
"@commitlint/cli": "^19.3.0",
"@commitlint/config-conventional": "^19.2.2",
"@trivago/prettier-plugin-sort-imports": "^4.0.0",
"commit-and-tag-version": "^12.4.0"
},
"lint-staged": {
"**/*": "prettier --write --ignore-unknown"
},
"resolutions": {
"jackspeak": "2.1.1"
},
"scripts": {
"api": "pnpm --filter api",
"common": "pnpm --filter common",
"coverage": "pnpm common build && concurrently --kill-others-on-fail \"pnpm common coverage\" \"pnpm client coverage\" \"pnpm api coverage\"",
"client": "pnpm --filter client",
"build": "pnpm common build && concurrently --kill-others-on-fail \"pnpm client build\" \"pnpm api build\"",
"dev": "pnpm common build && concurrently --kill-others-on-fail \"pnpm client dev\" \"pnpm api dev\"",
"start": "pnpm common build && concurrently --kill-others-on-fail \"pnpm client start\" \"pnpm api start\"",
"test": "pnpm common build && concurrently --kill-others-on-fail \"pnpm common test\" \"pnpm client test\" \"pnpm api test\"",
"release": "commit-and-tag-version --bumpFiles package.json packages/*/package.json",
"commitlint": "commitlint --edit"
},
"commit-and-tag-version": {
"writerOpts": {
"commitsSort": false
}
}
}
```

`common/package.json` 的配置:

```
{
"name": "common",
"version": "0.7.0",
"description": "common code shared by ppresume project",
"author": "Xiao Hanyu",
"private": true,
"devDependencies": {
"@types/jest": "^29.5.5",
"@types/lodash": "^4.14.202",
"@types/node": "^20.5.7",
"jest": "^29.7.0",
"ts-jest": "^29.1.1",
"typescript": "^5.2.2"
},
"main": "dist/index",
"types": "dist/index",
"scripts": {
"build": "tsc --build --force",
"coverage": "jest --coverage",
"test": "jest"
},
"dependencies": {
"escape-latex": "^1.2.0",
"tslib": "^2.6.2"
}
}
```

调用 `pnpm common build` 来完成 `common` package 的 build ,然后在 api/client 里直接 `import xxx from 'common'` 就可以了

3. mono-repo 有 mono-repo 的好处的,最大的好处是出了 regression 问题可以用 `git bisect` 找 bug ,commit log 的维护重点还是靠个人/团队守规则。

我个人项目的概况: https://x.com/hanyuxiao1988/status/1878625079829172510

以上
76 天前
回复了 xiaohanyu 创建的主题 分享创造 PPResume 新年更新:新增两款简历模板
@sikex 收到收到,太感谢了,bug 报告很详细。
76 天前
回复了 xiaohanyu 创建的主题 分享创造 PPResume 新年更新:新增两款简历模板
@anUglyDog 嗯,有时候颜值就是正义么,哈哈
77 天前
回复了 xiaohanyu 创建的主题 分享创造 PPResume 新年更新:新增两款简历模板
@scienhub 嗯,仁兄是懂行的哈
77 天前
回复了 xiaohanyu 创建的主题 分享创造 PPResume 新年更新:新增两款简历模板
@scienhub 排版引擎是 LaTeX 呢,具体来说是 XeLaTeX 引擎,前两个月写了篇关于排版引擎技术选型的文章: https://blog.ppresume.com/posts/zh-CN/on-typesetting-engines ,供参考哈。

中文排版也是完全支持的,而且支持简体中文、繁体中文(香港)和繁体中文(台湾)三种,具体可以看:

- blog: https://blog.ppresume.com/posts/multi-languagues-support
- doc: https://docs.ppresume.com/content/multi-languages
@wincatcher 加油加油
试验了下,挺不错的,是有打算做成类似于 similarweb 这样的工具平台么?有商业化计划么?
问一下,网站数据是从哪里分析出来的呀?
@realpg 你这人真是搞笑了咧,我哪里自说自话了?你怎么知道我没跟 paddle 的真人联系啊?为了开个户我还得订机票远涉重洋去找他们线下谈?你找他们线下谈他们就能接受么?

我邮件跟他们谈过几轮,贴几段原文:

```
Hi Hanyu,

I completely understand that you have registered your company recently and therefore you do not have the processing statements required.

However as a company, Paddle prioritises the safety and security of our valued customers, and this information is necessary for us to ensure a secure environment for all.

As we are unable to support your business at this time, I would recommend using an alternative payment provider until you are able to provide the requested processing statements.

I assure you that once you are able to resubmit your domain with the necessary information, our team will be more than happy to reassess the situation and provide a prompt response.

I appreciate your understanding.
```

```
Hi Hanyu,

I understand the challenge you're facing. To clarify, you will need to provide processing statements from a payment processor for at least the past three months. These statements help us assess your transaction history and ensure everything aligns with our requirements.

Yes, it typically means that you’ll need to integrate with another payment processor and generate some transaction history before applying for Paddle. Once you’re approved by Paddle, you can then migrate your customer data to our platform.

If you have any more questions or need further assistance during this process, please feel free to reach out.
```

人家已经写了:“Yes, it typically means that you’ll need to integrate with another payment processor and generate some transaction history before applying for Paddle. ”,但是这条规则就没在 paddle 的官网上明示过。

问题是,如果我已经集成了一个 payment processor ,我干嘛还要再费那个劲迁移到 paddle 啊? MoR 的服务又不只 paddle 一家。
1  2  3  4  5  6  7  8  9  10 ... 13  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3307 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 25ms · UTC 11:31 · PVG 19:31 · LAX 04:31 · JFK 07:31
Developed with CodeLauncher
♥ Do have faith in what you're doing.