diff --git a/.eslintrc.cjs b/.eslintrc.cjs
new file mode 100644
index 0000000..8f2bbcd
--- /dev/null
+++ b/.eslintrc.cjs
@@ -0,0 +1,83 @@
+/**
+ * This is intended to be a basic starting point for linting in your app.
+ * It relies on recommended configs out of the box for simplicity, but you can
+ * and should modify this configuration to best suit your team's needs.
+ */
+
+/** @type {import('eslint').Linter.Config} */
+module.exports = {
+ root: true,
+ parserOptions: {
+ ecmaVersion: "latest",
+ sourceType: "module",
+ ecmaFeatures: {
+ jsx: true,
+ },
+ },
+ env: {
+ browser: true,
+ commonjs: true,
+ es6: true,
+ },
+
+ // Base config
+ extends: ["eslint:recommended"],
+
+ overrides: [
+ // React
+ {
+ files: ["**/*.{js,jsx,ts,tsx}"],
+ plugins: ["react", "jsx-a11y"],
+ extends: [
+ "plugin:react/recommended",
+ "plugin:react/jsx-runtime",
+ "plugin:react-hooks/recommended",
+ "plugin:jsx-a11y/recommended",
+ ],
+ settings: {
+ react: {
+ version: "detect",
+ },
+ formComponents: ["Form"],
+ linkComponents: [
+ { name: "Link", linkAttribute: "to" },
+ { name: "NavLink", linkAttribute: "to" },
+ ],
+ "import/resolver": {
+ typescript: {},
+ },
+ },
+ },
+
+ // Typescript
+ {
+ files: ["**/*.{ts,tsx}"],
+ plugins: ["@typescript-eslint", "import"],
+ parser: "@typescript-eslint/parser",
+ settings: {
+ "import/internal-regex": "^~/",
+ "import/resolver": {
+ node: {
+ extensions: [".ts", ".tsx"],
+ },
+ typescript: {
+ alwaysTryTypes: true,
+ },
+ },
+ },
+ extends: [
+ "plugin:@typescript-eslint/recommended",
+ "plugin:import/recommended",
+ "plugin:import/typescript",
+ ],
+ },
+
+ // Node
+ {
+ files: [".eslintrc.js"],
+ env: {
+ node: true,
+ },
+ },
+ ],
+};
diff --git a/.eslintrc.js b/.eslintrc.js
deleted file mode 100644
index 0ef9764..0000000
--- a/.eslintrc.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('eslint').Linter.Config} */
-export default {
- extends: ["@remix-run/eslint-config", "@remix-run/eslint-config/node"],
-};
diff --git a/.github/workflows/add-zenhub-label.yml b/.github/workflows/add-zenhub-label.yml
deleted file mode 100644
index 8454287..0000000
--- a/.github/workflows/add-zenhub-label.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-# Ensure we add the correct ZenHub label for all new issues
-# Avoids problem where checklist issues are not added to the correct ZenHub pipeline
-
-name: Add ZenHub label to issues
-on:
- issues:
- types:
- - reopened
- - opened
-jobs:
- label_issues:
- runs-on: ubuntu-latest
- permissions:
- issues: write
- steps:
- - uses: actions/github-script@v6
- with:
- script: |
- github.rest.issues.addLabels({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- labels: ["Ecosystem: Frameworks"]
- })
diff --git a/.gitignore b/.gitignore
index 149f139..101a587 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,4 @@ node_modules
# Local Netlify folder
.netlify
+.DS_Store
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1 @@
+{}
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
deleted file mode 100644
index 5293b15..0000000
--- a/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,60 +0,0 @@
-# Contributor Covenant Code of Conduct
-
-## Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making
-participation in our project and our community a harassment-free experience for everyone, regardless of age, body size,
-disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race,
-religion, or sexual identity and orientation.
-
-## Our Standards
-
-Examples of behavior that contributes to creating a positive environment include:
-
-- Using welcoming and inclusive language
-- Being respectful of differing viewpoints and experiences
-- Gracefully accepting constructive criticism
-- Focusing on what is best for the community
-- Showing empathy towards other community members
-
-Examples of unacceptable behavior by participants include:
-
-- The use of sexualized language or imagery and unwelcome sexual attention or advances
-- Trolling, insulting/derogatory comments, and personal or political attacks
-- Public or private harassment
-- Publishing others' private information, such as a physical or electronic address, without explicit permission
-- Other conduct which could reasonably be considered inappropriate in a professional setting
-
-## Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take
-appropriate and fair corrective action in response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits,
-issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any
-contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
-
-## Scope
-
-This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the
-project or its community. Examples of representing a project or community include using an official project e-mail
-address, posting via an official social media account, or acting as an appointed representative at an online or offline
-event. Representation of a project may be further defined and clarified by project maintainers.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team. The
-project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the
-circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident.
-Further details of specific enforcement policies may be posted separately.
-
-Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent
-repercussions as determined by other members of the project's leadership.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at
-[http://contributor-covenant.org/version/1/4][version]
-
-[homepage]: http://contributor-covenant.org
-[version]: http://contributor-covenant.org/version/1/4/
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100644
index 346c934..0000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# Contributions
-
-🎉 Thanks for considering contributing to this project! 🎉
-
-When contributing to this repository, please first discuss the change you wish to make via an
-[issue](https://github.com/netlify/remix-template/issues/new/choose). Please use the issue templates. They are there to
-help you and to help the maintainers gather information.
-
-Before working on an issue, ask to be assigned to it. This makes it clear to other potential contributors that someone
-is working on the issue.
-
-When creating a PR, please use the template. The information in the template helps maintainers review your pull
-request.```
-
-This project was made with ❤️. The simplest way to give back is by starring and sharing it online.
-
-Everyone is welcome regardless of personal background. We enforce a [Code of conduct](CODE_OF_CONDUCT.md) in order to
-promote a positive and inclusive environment.
-
-## Development process
-
-First fork and clone the repository. If you're not sure how to do this, please watch
-[these videos](https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github).
-
-Run:
-
-```bash
-npm install
-```
-
-Make sure everything is correctly setup with:
-
-```bash
-npm test
-```
-
-## How to write commit messages
-
-We use [Conventional Commit messages](https://www.conventionalcommits.org/) to automate version management.
-
-Most common commit message prefixes are:
-
-- `fix:` which represents bug fixes, and generate a patch release.
-- `feat:` which represents a new feature, and generate a minor release.
-- `feat!:`, `fix!:` or `refactor!:` and generate a major release.
-
-## Releasing
-
-1. Merge the release PR
-2. Run `npm publish`
diff --git a/README.md b/README.md
index 1eab7c3..3737744 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Netlify Remix Template
-Welcome to the Netlify Remix Template project.
+Welcome to the Netlify Remix Template project. If you were expecting this to be your site, run `remix init` in the root of this project to get started.
To use the template, run
@@ -8,7 +8,6 @@ To use the template, run
npx create-remix@latest --template netlify/remix-template
```
-
This project includes:
- Netlify Functions template for Remix sites
@@ -27,7 +26,7 @@ If you're new to Remix stacks and the remix.init concept, see the official [Remi
Run
```bash
-npx create-remix@latest --template ./
+npx create-remix@latest --template ./remix-template
```
to test your changes to the template. Follow the steps the Remix CLI prompts you with to create a new project. Ensure to test for both the Netlify Functions template and the Netlify Edge Functions template.
diff --git a/app/entry.client.tsx b/app/entry.client.tsx
deleted file mode 100644
index 999c0a1..0000000
--- a/app/entry.client.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import { RemixBrowser } from "@remix-run/react";
-import { startTransition, StrictMode } from "react";
-import { hydrateRoot } from "react-dom/client";
-
-startTransition(() => {
- hydrateRoot(
- document,
-