Git Product home page Git Product logo

oxen-website's Introduction


Getting Started

This project is built with Contentful, Next.js, Tailwind CSS & Typescript.

System Requirements

Setup

  1. Install nvm

Follow nvm setup instructions here.

  1. Install Node.js locally
nvm install 14.15.0
nvm use 14.15.0
  1. Install yarn
npm install yarn -g
  1. Install dependencies
yarn install
  1. Signup for a free Contentful account and create an organisation and within that create a space.

    We called our organization Oxen and the space Website.

    • For the site to build correctly you need to import our Content models and assets into your Contentful space. We have created some example content so you can get comfortable with our Contentful setup.

      NOTE: Not all pages will load correctly because our Content is stored on Contentful.

    • Add your space ID and content management token inside of contentful/config.json

    • Run this command inside the root of this project

      npx contentful space import --config contentful/config.json
    
    • For more information about importing/exporting in Contentful see here.
  2. Setup your environment file. See our .env.example as a guide. Make sure to call the file .env.local.

    • You can leave the Campaign Monitor keys empty unless you are interested in how we handle mailing list subscriptions.

Developing

  • For accessbility testing we use the axe-react plugin.
  • We use the Headwind VSCode extension for sorting TailwindCSS classes.
  • We use classnames to organise our classes into groups that combine at build time.

If you are new to Next.js, this is a helpful introduction: https://nextjs.org/docs

Now you can run the development server:

yarn dev

Open http://localhost:3000 with your browser to see the Session homepage.

You can start editing the page by modifying pages/index.js. The page auto-updates as you edit the file.

The pages/api directory is mapped to /api/*. Files in this directory are treated as API routes instead of React pages.

Contentful

  • Use the Link Preview and Media content models for embedding content into blog posts.
  • If linking content that is on the site itself try to omit omit https://getsession.org. e.g. https://getsession.org/blog/onion-requests-session-new-message-routing-solution/ => /blog/onion-requests-session-new-message-routing-solution/.
  • To use superscript, subscript, strikethroughs or style text use the Markup content model.

Next.js

  • Try to use the next/image component in place of img tags where possible.
  • If you want to make a link to a location on the website use the next/link component with a relative path. i.e. https://getsession.org/blog -> /blog

TailwindCSS

Class organisation

This helps with readability and is encouraged. Consider it to be a guideline and not a set of rules.

React Component
  <div className={classNames(
    "general classes here - colors, fonts, padding, margin etc",
    "responsive class changes should have it's own string md: lg: etc."
    "placeholder classes",
    "animations, transforms, effect",
    "pseudo classes i.e hover, focus, active, etc.",
    "toggling classes i.e. NavMenu isExpanded"
  )}></div>
Custom CSS Class
.custom-class {
  @apply general classes here - colors, fonts, padding, margin etc;
  @apply responsive class changes should have it's own string md: lg: etc.;
  @apply placeholder classes;
  @apply animations, transforms, effect;
  @apply pseudo classes i.e hover, focus, active, etc.;
  @apply toggling classes i.e. NavMenu isExpanded;
}

Issues with Tailwind

We can't use template literals with classes if we want to purge (shrink) the CSS files at build time.

<div className="hover:bg-black hover:text-${bgColor}"></div> // Won't work in production

Deploying to Production

You can run the project in a production environment by running:

yarn run build && yarn run start

Make sure to do this locally and check for errors before pushing any code changes to your hosted repository

Any changes made on Contentful will be reflected on the production server hourly.

If you want to see your Contentful changes faster while using a production server you can use the Staging Environement.

Staging Environment

You can test the project in a staging environment by running:

yarn run build:staging && yarn run start:staging

Staging environments are password protected using the password you assign to STAGING_SECRET in .env.local.

To unlock the staging environment go to http://localhost:3000/login?secret=YOUR_PASSWORD_HERE

System environment variables and page metadata will also be updated to show it's a staging website.

Any changes made on Contentful will be reflected on the staging server every 30 seconds.

License

Distributed under the GNU GPLv3 License. See LICENSE for more information.

oxen-website's People

Contributors

bilb avatar lucaspdy avatar vincentbavitz avatar yougotwill avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.