解析 Remote In Tech 公司档案:以 Localistico 为例的远程友好公司数据结构与站点渲染全流程

原创2026-10-03 15:32:13620 阅读
文章标签:数据集

解析 Remote In Tech 公司档案:以 Localistico 为例的远程友好公司数据结构与站点渲染全流程

Localistico 是一份典型的"完全远程(fully-remote)"技术公司档案,完整收录在 Remote In Tech 远程友好公司目录的 src/companies/localistico.md 中。本文以这份档案为骨架,逐段拆解公司档案的 frontmatter 字段、正文章节规范与站点渲染链路:读完你不仅能完整读懂 Localistico 这家公司的远程工作方式与技术栈,还能掌握为 Remote In Tech 目录新增公司档案(或验证既有档案)的整套格式约定与源码级实现原理。

Localistico 档案概览:一份典型的 fully-remote 公司档案

Localistico 是一家本地营销平台(local marketing platform),帮助商家与营销团队跨 Google Maps、Yelp 等地图与本地平台管理和追踪自家门店的展示情况。档案 frontmatter 完整记录了这家公司的基础元数据:

---
title: "Localistico"
slug: localistico
website: https://localistico.com
region: europe
remote_policy: fully-remote
company_size: tiny
technologies:
  - javascript
  - ruby
addedAt: 2015-10-20
updatedAt: 2018-04-16
---

这 10 个字段中,前 8 个属于投稿者需要填写的业务字段,addedAt 与 updatedAt 则由维护者管理(CONTRIBUTING.md 明确说明 PR 中请勿包含这两个日期字段)。值得注意的还有档案的时效性:updatedAt: 2018-04-16 表明该档案最近一次更新于 2018 年,因此下文提到的团队人数、技术栈与办公城市描述,反映的是彼时快照而非当前实时状态——这也是阅读任何公司档案时需要留意的数据口径。

Frontmatter 字段逐项解析:取值受控,全站统一

Remote In Tech 对 frontmatter 字段采用受控词表,所有取值必须落在 CONTRIBUTING.md 定义的合法值范围内,任何脱离词表的取值都会导致构建或校验失败:

字段 Localistico 取值 合法取值
region europe worldwide、americas、europe、americas-europe、asia-pacific、other
remote_policy fully-remote fully-remote、remote-first、hybrid、remote-friendly
company_size tiny tiny(1-10 人)、small(11-50)、medium(51-200)、large(201-1000)、enterprise(1000+)
technologies javascript、ruby javascript、ruby、go、python、react、nodejs 等 25 个受控标签

这些枚举值的展示名称由全局单一数据源 src/_data/labels.js 统一维护:europe 渲染为 "Europe",fully-remote 渲染为 "Fully Remote",tiny 渲染为 "1-10 employees",javascript/ruby 渲染为 "JavaScript"/"Ruby"。该文件同时通过 src/_data/companyHelpers.js 以 regionLabels、remotePolicyLabels、companySizeLabels、techLabels 的形式导出给 JavaScript 消费方(如集合构建逻辑),并作为 labels.* 全局数据注入 Nunjucks 模板——即 JS 与模板共用同一份词表,从源码结构看,这是避免标签文案在页面与数据层分叉的关键设计。

正文章节规范:必需三节与可选小节

按 CONTRIBUTING.md 的约定,公司档案正文必须包含三个 ## 二级标题,Localistico 的档案完整覆盖并额外提供了多个常用小节:

Company blurb(必需):一段话讲清公司做什么

We are a local marketing platform. We help business owners and marketing teams to manage and track how their locations look across different mapping and local platforms, from Google Maps to Yelp. We're generating early revenue and our current clients include brands like El Corte Inglés, Sabadell Bank, Jurys Inn and Foxtons.

这段 blurb 不仅是人类读者了解公司的入口,还被系统自动转换为搜索引擎元描述。在 src/companies/companies.11tydata.js 的 eleventyComputed 中,站点构建时使用正则 /\#\#\s*Company\s*blurb\s*\n+([\s\S]*?)(?=\n##|$)/i 精确截取 blurb 段落,剥离 Markdown 链接与强调符号、合并空白后截断到约 155 字符——若在句号处截断则保留完整句子,否则在单词边界补省略号。也就是说:改一行 blurb,搜索引擎的 meta description 会自动同步更新,无需手工维护。

Remote status(必需):完全远程团队的协作方式

Localistico 是典型的"完全远程"团队,档案原文说明团队四人分别生活在伦敦、马德里、萨拉曼卡和赫罗纳四座不同城市(公司规模字段 tiny 即 1-10 人与此吻合)。协作工具栈如下:

  • 任务组织:GitHub Issues + Codetree
  • 日常沟通:Slack 作为"办公室"
  • 实时协作:ScreenHero 或 Google Hangouts(需要结对工作时使用)
  • 文化基调:欢迎异步协作(asynchronous culture)

这一小节是求职者判断"远程体验是否适合自己"的关键信息,也是评审者判断公司是否属于"真正的远程友好"(而非仅限特定时区/城市)的依据之一。

Region(可选):远程的地理边界

Localistico is focused in UK and Spain currently, but you can work from wherever part of the world you like.

档案明确区分了"业务聚焦区域"(UK 与 Spain)与"招聘区域"(全球任意地点)。在目录数据层面,region: europe 用于分类浏览;而在 src/_config/collections.js 的 getCompaniesByRegion 中,每个公司按其 region 字段被归入对应分组,最终生成 /browse/{region}/ 浏览页面。

Company technologies(可选):技术栈快照

档案记录的技术栈相当完整,反映 2018 年前后 Localistico 的工程架构:

  • 后端:Ruby on Rails 为主,另有部分 Go 组件
  • 数据存储:PostgreSQL + Redis(resque 队列)+ ElasticSearch
  • 前端:Ember.js 单页 Web 应用
  • 部署:全云端,基于 Codeship + Heroku 的 CI/CD 流水线
  • 代码托管:GitHub 仓库与 Issues

注意档案的 technologies 列表只收录了 javascript 与 ruby 两个受控标签——Go、PostgreSQL、ElasticSearch 虽在正文中提及,但因受控词表未收录 go 之外的这些具体词项(词表中另有 postgres、search、nosql 等更宽泛标签可选),正文与标签之间存在"详细正文 + 精简标签"的取舍。从源码结构看,technologies 数组驱动两处渲染:一是 src/_layouts/company.njk 中的 "Tech Stack" 区块,逐个渲染为可点击的 /browse/{tech}/ 标签;二是 getCompaniesByTech 集合,按技术聚合全部公司。company_size 同理:tiny 在档案页显示为公司规模标签,同时供站内分类使用。

Office locations(可选)

We have offices in London and Madrid.

该小节说明公司虽为 fully-remote,但仍有实体办公室(伦敦与马德里),属于"完全远程但保留线下据点"的常见形态。

How to apply(必需):投递路径

Please send us a link to your Github and LinkedIn profiles, or an up-to-date copy of your CV and a short note/email intro to contact@localistico.com

投递要求明确:提供 GitHub + LinkedIn 主页链接,或最新简历,并附简短自我介绍邮件。这条信息是档案对求职者最有实操价值的部分之一。

档案如何变成网页:从 Markdown 到渲染的全链路

一份 localistico.md 从源码到线上页面的流转,由以下源码组件接力完成:

  1. 数据层:src/companies/companies.json 为整个目录声明默认布局 layout: company;src/companies/companies.11tydata.js 通过 eleventyComputed 为每个公司计算 meta description。
  2. 集合层:src/_config/collections.js 用 getFilteredByGlob('./src/companies/**/*.md') 抓取全部公司档案并按标题字母序排序;getCompaniesByRegion、getCompaniesByTech 与 getCompanyTags 进一步按 frontmatter 字段构建分类索引(region、remote-policy、technology 三类标签),驱动 /browse/ 系列页面。
  3. 渲染层:src/_layouts/company.njk 将 frontmatter 渲染为页面头部:标题、website 或 careers_url 按钮(Localistico 档案未提供 careers_url,因此按钮指向 website)、region 与 remote_policy 标签;正文 Markdown 通过 {{ content | safe }} 原样输出;页面底部基于 updatedAt 显示 "Last updated" 日期。
  4. 结构化数据层:src/_includes/schemas/Organization.njk 将 title 与 website(若有 careers_url 则并入 sameAs)输出为 application/ld+json 的 schema.org Organization 结构化数据,供搜索引擎理解公司实体。

也就是说,投稿者只需要填写 frontmatter 与 Markdown 正文,分类标签、元描述、结构化数据与浏览页面全部由构建管线自动派生。

从 Localistico 档案看投稿与校验要点

对照 CONTRIBUTING.md 的收录标准,Localistico 档案是符合规范的正例:

  • 正文包含必需三节:## Company blurb、## Remote status、## How to apply;
  • frontmatter 取值全部命中受控词表;
  • 公司属于技术行业(本地营销平台,工程团队以 Ruby/JavaScript 为主),提供真实的远程全职岗位。

如需为其他公司新增档案,流程为:在 src/companies/{slug}.md 新建文件(文件名必须与 frontmatter 的 slug 一致)→ 按模板填写字段与正文 → 执行 npm run build 验证构建 → 提交 PR(见 README.md 与 CONTRIBUTING.md)。仓库内置的 Validate Company Profiles 校验任务会检查字段合法性、必需章节与文件命名,若 bot 提示"older file format"则需按上述新格式调整。

小结

Localistico 档案同时具备三重价值:对求职者,它是了解一家 fully-remote 欧洲初创公司工作方式与技术栈的一手资料;对目录贡献者,它是"受控字段 + 必需章节"格式的完整范例;对开发者,它是观察 companies.11tydata.js、collections.js、labels.js 与 company.njk 协同工作方式的真实样本。读懂这份档案,也就读懂了 Remote In Tech 目录公司数据模型的核心约定。

登录后查看全文
remote-jobs