{"id":18383399,"url":"https://github.com/dwolla/dev-portal","last_synced_at":"2025-08-29T17:21:04.746Z","repository":{"id":37836062,"uuid":"246385332","full_name":"Dwolla/dev-portal","owner":"Dwolla","description":"Dwolla developer portal. Provides Guides, Resources, and Tools for developers integrating with the Dwolla Platform","archived":false,"fork":false,"pushed_at":"2025-06-16T21:19:40.000Z","size":15364,"stargazers_count":6,"open_issues_count":10,"forks_count":8,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-07-08T19:13:55.607Z","etag":null,"topics":["api-documentation","developer-documentation","developer-experience","developer-portal"],"latest_commit_sha":null,"homepage":"https://developers.dwolla.com","language":"MDX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dwolla.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-03-10T19:07:02.000Z","updated_at":"2025-06-16T21:19:44.000Z","dependencies_parsed_at":"2022-06-22T20:25:26.974Z","dependency_job_id":"6fa0c784-158d-4ebd-9fa9-a2e58e2f0e1a","html_url":"https://github.com/Dwolla/dev-portal","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Dwolla/dev-portal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dwolla%2Fdev-portal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dwolla%2Fdev-portal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dwolla%2Fdev-portal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dwolla%2Fdev-portal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dwolla","download_url":"https://codeload.github.com/Dwolla/dev-portal/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dwolla%2Fdev-portal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272731821,"owners_count":24984024,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-29T02:00:10.610Z","response_time":87,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-documentation","developer-documentation","developer-experience","developer-portal"],"created_at":"2024-11-06T01:11:15.703Z","updated_at":"2025-08-29T17:21:04.691Z","avatar_url":"https://github.com/Dwolla.png","language":"MDX","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dev-portal\n\n## Getting Started\n\nIf you choose to get started without Docker, ensure that you are building `dev-portal` with Node v16. Otherwise, to use Docker, \nrefer to the following section, [Using Docker](#using-docker).\n\n```bash\nyarn install\nyarn dev\nopen http://localhost:3000\nopen dev-portal.code-workspace\n```\n\n## Using Docker\n\nEnsure [Docker](https://docs.docker.com/get-docker/) is installed on your machine before following these steps. To use Docker with \nthis repository, you can either use Docker's CLI or Docker Compose, both of which are defined in more detail below:\n\n### Docker CLI\n\n```bash\n# Build Docker Container\n$ docker build -t dwolla/dev-portal:0.1.0 .\n\n# Start Docker Container\n$ docker run [-d] -p 3000:3000 \\\n  -v \"$(pwd)\"/:/app \\\n  -v /app/.mdx-data \\\n  -v /app/.next \\\n  -v /app/node_modules \\\n  dwolla/dev-portal:0.1.0\n```\n\n### Docker Compose\n\n```bash\n# Build Docker Container\n$ docker-compose build\n\n# Start Docker Container\n$ docker-compose up [-d]\n\n# Destroy Docker Container\n$ docker-compose down\n```\n\n## Commands\n\n- `yarn install` - Install dependencies\n- `yarn dev` - Start development server\n- `yarn test{,:ci,:coverage}` - Run tests\n- `yarn checks` - Run Prettier, TypeScript, ESLint checks\n- `yarn fix` - Attempt to fix Prettier, TypeScript, ESLint errors\n- `yarn build` - Build for production\n- `yarn build-storybook` - Build Storybook\n- `yarn start` - Start production server\n- `yarn storybook` - Start Storybook\n\n## Pages\n\nThe framework powering `dev-portal`, [Next.js][nextjs], centers around [pages][nextjs-pages].\n\n\u003e In Next.js, a **page** is a [React Component][react-component] exported from a `.js`, `.ts`, or `.tsx` file in the `pages` directory. Each page is associated with a route based on its file name.\n\u003e\n\u003e **Example**: If you create `pages/about.js` that exports a React component like below, it will be accessible at `/about`.\n\nIn addition, `dev-portal` supports [`.mdx`][mdx] pages which:\n\n- are Markdown files\n- define metadata as YAML frontmatter\n- can embed React components\n\nFor example:\n\n```markdown\n---\ncategory: \"\" # Which category doc is displayed under in sidebar\ntitle: \"\" # Doc title when linked to\n\n# Defining a `group` on `index.mdx` groups docs in same folder\ngroup:\n  category: \"\" # Overrides individual doc categories\n  title: \"\" # Group title that can be expanded in sidebar\n---\n\nPage content\n\n\u003cMyComponent /\u003e\n```\n\n#### Sections\n\nCategories can be ordered in the side nav by creating a `_section.yml` file in a section's root directory (e.g. `pages/guides/_section.yml`).\n\n```yaml\ncategories:\n  - \"Getting Started\"\n  - \"Customers\"\n  - \"Funding Sources\"\n  - \"Webhooks\"\n```\n\n![doc concepts](/doc-concepts.png)\n\n[mdx]: https://mdxjs.com\n[nextjs]: https://nextjs.org\n[nextjs-pages]: https://nextjs.org/docs/basic-features/pages\n[react-component]: https://reactjs.org/docs/components-and-props.html\n\n## Components\n\nIn addition to pages, the following can be found in `/components`:\n\n- `layout` components\n  - render the layout _surrounding_ a page\n- `partial` components\n  - render parts _within_ a page\n- `atom` components\n  - building blocks extracted from `layout` and `partial` components\n- `util` components\n  - don't contain markup or styles\n\n### Where to put components?\n\nComponents are organized based on their relationship to pages.\n\nAs a rule of thumb, start with a `layout` or `partial` component. Which one depends on _where the component is rendered relative to a page_:\n\n- `layout` components are rendered _outside_ the page\n- `partial` components are rendered _within_ the page\n\n![component types](/component-types.jpg)\n\n### What about `atom` and `util` components?\n\n`atom` components can be extracted from `layout` and `partial` components when an abstraction becomes apparent. In general, it's a good idea to wait until you have some concrete use cases for an abstraction before creating one.\n\n- https://terodox.tech/one-two-n-pattern/\n- https://overreacted.io/goodbye-clean-code/\n- https://www.sandimetz.com/blog/2016/1/20/the-wrong-abstraction\n\n`util` components are different than other types of components in that they don't contain markup or styles. `util` components are good candidates for breaking out into their own library/package at some point.\n\n## Conventions\n\n#### Naming Styled Components\n\nPrefix styled components with `Styled*`, for example:\n\n```tsx\nconst StyledContainer = styled.div`\n  padding: 10px;\n`;\n\nconst MyComponent = () =\u003e \u003cStyledContainer\u003eMyComponent\u003c/StyledContainer\u003e;\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdwolla%2Fdev-portal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdwolla%2Fdev-portal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdwolla%2Fdev-portal/lists"}