1
0
mirror of https://github.com/uetchy/namae.git synced 2025-03-16 20:20:38 +09:00
namae/CONTRIBUTING.md

2.5 KiB

Contribution Guide

Setup environment

Install now for development server:

yarn global add now

then install deps and fire up dev server.

yarn install
yarn start

Add new provider

Create web/src/components/cards/<NewCard>.js. Here is the example card that checks if spcified repository on GitHub is available.

import React from 'react'
import { useTranslation } from 'react-i18next'
import { FaGithub } from 'react-icons/fa'

import { Card, Repeater, DedicatedAvailability } from '../Cards'

export default function GithubCard({ name }) {
  const { t } = useTranslation()
  const lowerCase = name.toLowerCase()

  const names = [name]
  const moreNames = [
    `${lowerCase}hq`,
    `${lowerCase}-team`,
    `${lowerCase}-org`,
    `${lowerCase}-js`,
  ]

  return (
    <Card title={t('providers.github')}>
      <Repeater items={names} moreItems={moreNames}>
        {(name) => (
          <DedicatedAvailability
            name={name}
            service="github"
            link={`https://github.com/${name}`}
            prefix="github.com/"
            icon={<FaGithub />}
          />
        )}
      </Repeater>
    </Card>
  )
}

and add the card to /web/src/App.js:

import NewCard from './components/cards/NewCard'
<SearchResult>
  <Cards>
    <GithubCard name={query} />
    <DomainCard name={query} />
    <TwitterCard name={query} />
    <HomebrewCard name={query} />
    <NpmCard name={query} />
    <PypiCard name={query} />
    <CratesioCard name={query} />
    <JsOrgCard name={query} />
    <SlackCard name={query} />
    <S3Card name={query} />
+   <NewCard name={query} />
  </Cards>
</SearchResult>

ExistentialAvailability

ExistentialAvailability check if the response from passed URL returns 404 or not. For example, <ExistentialAvailability target="https://formulae.brew.sh/api/formula/git.json" /> will send a request to target and see if it returns with 404. For security reasons, target must send back Access-Control-Allow-Origin: * header for bridging across cross-site requests. If they don't support Access-Control-Allow-Origin, you might want to use DedicatedAvailability for dedicated response handling.

DedicatedAvailability

DedicatedAvailability is for interacting with defined API endpoint to check availability. For example, <DedicatedAvailability service="<service>" /> will send a request to https://namae.dev/availability/<service>/<query> which is routed to /api/services/<service>.js in the repo.