Git Product home page Git Product logo

open-sauced's Introduction

This repo is archived. If you are looking for the latest, check out open-sauced/insights or open-sauced/hot.


Open Sauced

๐Ÿ• Open Sauced ๐Ÿ•

The path to your next Open Source contribution

CodeQL Compliance Release Publish stories if changed Netlify Status Dependabot Badge GitHub code size in bytes GitHub commit activity GitHub issues GitHub Release Discord Twitter

Open Sauced provides structured onboarding for new contributors to open source. This structure provides a way to track your next contributions by leveraging a unique dashboard built on top of the GitHub GraphQL API.

open-sauced-screencap

๐Ÿ“– Prerequisites

In order to run the project from a container we need node>=14, npm>=7 and docker>=20 installed on our development machines or use one of the listed cloud providers we support:

Gitpod

โœ… fully ready integrated development environment

โญ• VS Code settings sync is not ideal

Open in Gitpod

Gitpod is mostly free but has extensive documentation for all its contributing features.

For Vite to work with Gitpod we need to use a custom Dockerfile that lives under .gitpod.Dockerfile.

Open Sauced comes with a pre-defined .gitpod.yml that should work out of the box in multiple contribution scenarios.

Replit

โœ… fully ready integrated development environment

โญ• modified contribution workflows

Open in Replit

Replit is an old service that recently supported NixOS, enabling full customisation of the runner and project.

Open Sauced is configured with a shell environment supporting node@16 and npm@8. The build environment script lives in shell.nix and the repl config lives in .replit.

Codesandbox

โœ… can be used as editor replacement

โœ… supports deployment preview

โญ• enforces custom package manager for stability

โญ• low resources free tier limitations

Open in CodeSandbox

Stackblitz

โœ… can be used as editor replacement

โœ… supports deployment preview

โญ• enforces custom package manager for stability

โญ• limited documentation on container limitations

Open in Stackblitz

Glitch

โœ… can be used as editor replacement

โœ… supports deployment preview

โญ• enforces custom package manager for stability

โญ• does not support stacked hot module reload

โญ• severely low resources free tier limitations

Remix on Glitch

๐Ÿ–ฅ๏ธ Local development

To install the application:

npm ci

To start a local copy of the app on port 3000:

npm start

๐Ÿงช Test

For running the test suite, use the following command. Since the tests run in watch mode by default, some users may encounter errors about too many files being open. In this case, it may be beneficial to install watchman.

npm test

You can request a coverage report by running the following command:

npm run test:coverage

๐Ÿ“ฆ Docker builds

A development preview can also be run from docker:

docker build -t open-sauced-dev .
docker run -p 8080:80 open-sauced-dev

Alternatively you can pull the production container and skip all builds:

docker run -dit -p 8080:80 ghcr.io/open-sauced/open-sauced

๐ŸŽจ Code linting

To check the code and styles quality, use the following command:

npm run lint

This will also display during development, but not break on errors.

To fix the linting errors, use the following command:

npm run format

๐Ÿš€ Production deployment

A production deployment is a complete build of the project, including the build of the static assets.

npm run build

You can analyze the build by running the following command:

npm run build:analyze

๐ŸŽญ Offline asset optimization

We also have a script for updating .svg files used in the project, you only need to run this if you add new assets:

npm run build:svgo

And one for .png and .jpg files:

npm run build:squoosh

๐Ÿšง Development debugging

Thanks to antfu/vite-plugin-inspect we can always inspect the bundles in development by navigating to localhost:3000/__inspect/ in your browser.

๐Ÿ“™ Storybook

Storybook is being leveraged to mock out visual React components. The latest version of the design system can be found at this URL.

npm run storybook

storybook example screenshot

๐Ÿ”‘ Authentication

Authentication is handled through OneGraph's AuthGuardian service.

๐Ÿ’พ Database

This project uses GitHub as a database. When you login, you will be presented with a button to create a goals repository. That repository template lives at open-sauced/goals-template.

๐Ÿ’จ Service Worker

This project uses the sw-precache to kickstart an offline cache. The offline cache only registers in production. If service needs to be manually removed make an unregister call from the registerServiceWorker.js import.

๐ŸŒ™ Dark Mode

This project supports "dark mode" styling, and by default it will follow the color preference on your device. It also allows for overriding this using buttons at the top right of the screen, which will persist the preference to local storage on your device. More info about color preference web API's can be found here: MDN Web Docs

๐Ÿ“ Markdown Support

This project leverages Remirror for a delightful experience in documenting your Open Source goals. The editor supports markdown features including heading levels, bulleted lists, text formatting, code snippets, and emojis!

๐Ÿค Contributing

We encourage you to contribute to Open Sauced! Please check out the Contributing guide for guidelines about how to proceed.

We have a commit utility called @open-sauced/conventional-commit that helps you write your commits in a way that is easy to understand and process by others.

It is generally integrated as an npm script but you can run it with npx as well:

npm run push

For any other npm based project or dotnpmrc defaulting to --yes:

npx -y @open-sauced/conventional-commit

๐Ÿ• Community

Got Questions? Join the conversation in our Discord.
Find Open Sauced videos and release overviews on our YouTube Channel.

๐ŸŽฆ Repository Visualization

Visualization of this repository

โš–๏ธ LICENSE

MIT ยฉ Open Sauced

open-sauced's People

Contributors

0-vortex avatar bdougie avatar chadstewart avatar ckopecky avatar dapthehuman avatar deadreyo avatar dependabot-preview[bot] avatar dependabot[bot] avatar elixer3000 avatar filiptronicek avatar git-srinivas avatar github-actions[bot] avatar hustshawn avatar japneetsingh5 avatar jasonericdavis avatar jendowns avatar jnielson94 avatar johnyu0424 avatar mtfoley avatar mukulkolpe avatar murilo-goncalves avatar nayabatir1 avatar nersoh avatar nickytonline avatar nileshpatel17 avatar notmoni avatar rozzaysred avatar rupaak avatar sgrove avatar takanome-dev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

open-sauced's Issues

remove ./src/queries

These queries are deprecated and no longer used by the project.

  • remove references in any files
  • remove files

Use subscriptions properly

What is the current behavior?

This project is calling data.refetch. This should instead be a subscription.

If the current behavior is a bug, please provide the steps to reproduce.

Graphcool has subscriptions as a feature, it would be best to leverage that by adding a subscription to the ApolloClient

BUG: Add new repos does not refetch the data from GraphQL endpoint

- Do you want to request a feature or report a bug?
Bug

- What is the current behavior?
When I add a new repo to this GraphQL database using the mutation it redirects to the home page but the data does not refetch. I have to do a hard refresh to get it to work.

- If the current behavior is a bug, please provide the steps to reproduce.

  1. visit open-sauced.netlify.com
  2. Click add new repo, enter a repo url, and click submit
  3. Note the repo is note in the list
  4. Hard refresh the page and note that the repo is now in the list

ezgif com-video-to-gif 6

- What is the expected behavior?
The repo list should refresh when the component mounts.

I might try subscriptions or something similar to the refetch in apollo-client api

- Please mention your node.js, and operating system version.
React Router v4.1.1
Apollo v 1.2.0

Implement Apollo Caching

- Do you want to request a feature or report a bug?
Feature
- What is the current behavior?
Currently, the content is fetched everytime the page loads. I originally started adding Redux to cache with Apollo but it was a pain to integrate and was not worth the effort. Apollo 2.0 has caching, which seems more ideal.

- What is the expected behavior?
Refresh the page and not rerender the content.

Add Styled Components and CSS all the things.

I am open to all things, just want to try out adding Styled Components now and see how it goes.

  • Buttons
  • Text styling, i.e. HeaderText or Subtext components.
  • Form Styling components
  • Grid/Layout

Use Github stars for "tracked repos"

- Do you want to request a feature or report a bug?
Feature
Instead of manually adding GitHub repos that a user is interested in following, Open Sauced could instead utilize a users' starred repos to populate their tracked repo list.

This would likely need to be prefaced with Github authentication.

Upgrade to React 16

Do you want to request a feature or report a bug?

What is the current behavior?

If the current behavior is a bug, please provide the steps to reproduce.

Please mention your node.js, and operating system version.**

What is the expected behavior?

Dependabot can't resolve your JavaScript dependency files

Dependabot can't resolve your JavaScript dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:

Error whilst updating dependencies in package-lock.json:
Cannot read property 'match' of undefined

It looks like your lockfile has some corrupt entries with missing versions and needs to be re-generated.
You'll need to remove package-lock.json and node_modules before you run npm install.

If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

You can mention @dependabot in the comments below to contact the Dependabot team.

Add React Router

Everything is on one single page. I need to add a router and create new pages. Might want to address a new file structure as well.

Programmatically add netlify deploys to whitelist

Is there a programmatic way to add Netlify deploy preview to the OneGraph whitelist and remove.

Perhaps a GitHub Action?

Things to look into

  • Does OneGraph have an open API
  • Can a netlify webhook trigger the OneGraph API

[Broken graphql-up link] Update open-sauced.schema to use @model directive

Do you want to request a feature or report a bug?

bug

What is the current behavior?

The README link for creating the schema is throwing errors due to a new breaking change: https://www.graph.cool/forum/t/introducing-the-model-directive/1272

If the current behavior is a bug, please provide the steps to reproduce.

Click the link to create a new graphql schema.

screenshot 2017-10-16 18 53 01

What is the expected behavior?

Clicking a link should create a new graphql schema on graphcool

Update database/storage strategy

Do you want to request a feature or report a bug?

Feature

What is the current behavior?

At the moment an old version of prisma(graphcool) is being used to save data and interact with Apollo. All of the above is out of and needs to be update.

What is the expected behavior?

  • Update Apollo
  • Update Prisma or move to another solution
  • Identify schema for the following
    • ContributorBreadcrumbs (model to store key repo info)
    • Saved Repos
      • Save notes for saved repos (Wiki - should these be public?)

Add icons to app

- Do you want to request a feature or report a bug?
This would be an enhancement to the current state of the app. I just found out about this project https://feathericons.com and think it would be great to add.

screenshot 2017-06-01 08 15 00

Better Handling of GoalsId storage

At the moment the goalId is being set in localStorage. This might grow into an issue, but for now it works. Redux or MobX seems like overkill for now, since this and the auth jwt is the only info being store globally.

Looking for a better way or confirmation

  _handleGoalId(id) {
    localStorage.setItem("goalsId", id);
  }

Questions

  1. Should the be stored in a global store?
  2. Is there other localStorage use in the future?

Add Prettier

- Do you want to request a feature or report a bug?
Feature

- What is the current behavior?
Currently the code linting is forced using lint-staged. I am proposing replacing it with prettier instead.

- What is the expected behavior?
Instead of failing commits when lint fails, it would be nice to enforce linting on save.

TODO: remove this when upgrading to webpack 5

There is a note to remove this when upgrading to webpack 5.

// [config/webpack.config.js](https://github.com/bdougie/open-sauced/blob/master/config/webpack.config.js#L160)
 filename: isEnvProduction
        ? 'static/js/[name].[contenthash:8].js'
        : isEnvDevelopment && 'static/js/bundle.js',
      // TODO: remove this when upgrading to webpack 5
      futureEmitAssets: true,
      // There are also additional JS chunk files if you use code splitting.

It is not clear what this is.

  • Figure out the reference to this
  • upgrade to webpack 5
  • remove this

GitHub authentication

- Do you want to request a feature or report a bug?
Feature
Given that this project circulates around GitHub projects, I think that a user should be able to authenticate and sign in with their GitHub account.

My understanding currently is that each user has their own version of Open Sauced hosted on something like Netlify, but there isn't anything in place to prevent someone else from adding repositories or comments to another user's list.
Adding GitHub authentication would protect users from potential vandalism or accidental editing of OpenSauce lists and also could open the doors to other interesting integrations with GitHub's API, such as grabbing 'starred' repos, etc.

Add dependabot

Add dependabot to get rid of security vulnerabilities

Feature: Add searchable issues

- Do you want to request a feature or report a bug?
Feature

- What is the current behavior?
currently, the only feature is adding notes to repos.

- What is the expected behavior?
Ideally a user should be able to search open issues on the repo using the GraphQL api and makes notes on it's content

Ability to delete a repository

- Do you want to request a feature or report a bug?
Feature

- What is the current behavior?
You save as many repositories as you would like, but you have no way to delete any.

- What is the expected behavior?
A simple delete button and button to remove repositories is needed

webpack and webpack-dev-server upgrade

Do you want to request a feature or report a bug?

enhancement/bug

What is the current behavior?

When upgrading webpack, there are multiple failures. The cli is not helpful due to breaking changes between 1.x to 4.0.0.

If the current behavior is a bug, please provide the steps to reproduce.

npm install -D @webpack/migrate
webpack-cli migrate config/webpack.dev.js

This will not work

What is the expected behavior?

I will need to upgrade manually, first to 2.x, then to 3.x, then 4.x

Opening this issue to track this upgrade.

Open Sauced needs a logo/favicon

I am thing a siracha or ketchup bottle, but open to suggestions. If you would like to take this, SVG would be needed, as well as a favicon.

useHooks instead of class Components

This project started in 2017, when Class components were fading as the premier way to create React Components.

This app needs consistency in its approach to Component development and will need to adjust to using hooks. This will improve consistency in how we leverage the apiGraphql.js file throughout the project.

TODO:

  • remove use of compose HOC in favor of hooks
  • update eslint rules to align with this change.

List of Containers components

List of Dumb components

Properly setup GitHub Oauth

Do you want to request a feature or report a bug?

feature/bug

What is the current behavior?

At the moment GitHub Login does not. I am looking into creating an Oauth App to handle the authentication

If the current behavior is a bug, please provide the steps to reproduce.

Open the home page and see login is broken

Screenshot 2019-08-30 09 47 23

What is the expected behavior?

I expect the login to work. Looking into to using one of the following solutions.

https://www.onegraph.com/docs/logging_users_in_and_out.html

or

https://github.com/checkr/react-github-login

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.