Giter Site home page Giter Site logo

open-sauced / app Goto Github PK

View Code? Open in Web Editor NEW
345.0 9.0 194.0 98.22 MB

๐Ÿ• Insights into your entire open source ecosystem.

Home Page: https://pizza.new

License: Apache License 2.0

JavaScript 0.98% TypeScript 98.72% CSS 0.30% Shell 0.01%
open-source pizza nextjs react hacktoberfest

app'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

app's People

Contributors

0-vortex avatar 5hraddha avatar a0m0rajab avatar aryanas159 avatar ashutosh-rath02 avatar babblebey avatar bdougie avatar bekahhw avatar brainconnect93 avatar brandonroberts avatar chadstewart avatar deadreyo avatar deepakrudrapaul avatar diivi avatar foxyblocks avatar himanshu-malviya15 avatar isabensusan avatar itskish0re avatar jpmcb avatar nickytonline avatar nworiekingslee avatar ogdev-01 avatar payn33 avatar pixelsbyeryc avatar ritadee avatar shamimbinnur avatar sourabpramanik avatar takanome-dev avatar thepiyushaggarwal avatar zeucapua 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

app's Issues

[Front-End] Make Tool list Nav Component more compatible with Storybook

Image

Currently the Tool list Nav component is implemented and deployed. While the list is dynamically generated, it is being done by a hook that is implemented inside the component.

This component should be converted to accept a list and create the nav based on the list being passed. It should also be set up in such a way that Storybook can also manipulate the number of list items being passed to increase and decrease the size of the nav.

[Copy] Provide the copy for the authentication flow

Provide the copy for the authentication flow screens. You can view the screens in Figma, or track it on this file:

Current copy:

Left side:

  • Title: Let's get saucing
  • Description: Open Sauced is a tool to help track your open source contributions. You can get started by creating a goal workspace below.
  • Steps:
    1. Authenticate with GitHub
    2. Provide an API Token
    3. Follow some repositories

Step One

  • Title: Authenticate with GitHub
  • Description: Weโ€™re going to sync your repositories with OpenSauced, so we can show you insights that matter to you. Hereโ€™s what we need:
    • Lorem ipsum
    • Lorem ipsum
  • Button: Authenticate

Step Two

  • Title: Provide your token
  • Description: In order to provide fresh, and insightful data, weโ€™ll need a favor: a GitHub API token that we can use. Hereโ€™s how weโ€™re going to use your token:
    • Lorem ipsum
    • Lorem ipsum
  • Input Placeholder: Insert your token here
  • Button: Confirm Token

Step Three

  • Title: Follow some repos
  • Description: Weโ€™ll provide insights on the repos you choose to follow. You can follow up to 10 repos.
  • Button Transparent: Skip this step

[Front-End] Make Header Component more compatible with Storybook

Image

Currently, the Header component of Insights is implemented and deployed but most of the content is hard-coded and uneditable. The component needs to be updated to be more compatible with Storybook.

What this means is that the component would need to allow Storybook to change the component such as changing the title, subtext, image and the potential tags that are shown. The tabs are not critical but being able to change the Title, subtext and potentially the image is.

[Front-End] Implement first draft of eCharts Scatter charts

Image

Currently this component is not implemented in the project. The image above is an implementation of eChart's Scatter chart in GitSense. What is the intended implementation is a basic version of this chart.

Currently eCharts is not installed in this project and so that would need to be done. Once installed, implement eCharts and add it to Storybook as well.

[Chore] Set up hierarchies in Storybook

Image

Currently the only hierarchy in Storybook is that of the story and the component inside. This makes organizing stories very difficult especially considering that we are using the Atomic Design system which two levels of hierarchies before getting to the actual component.

Storybook needs to be updated to add hierarchies to stories to make them easier to understand and find when compared to the app folder structure.

[Chore] Add Storybook documentation to README

Storybook has been set up to be deployed whenever a PR is merged to main with stories changed. Currently Storybook is not reflected at all in the README file. This is meant to update the README file for running Storybook locally and Storybook online.

TOP 5 Week 29 July 18th

What are you planning to get done by the end of this week? (Remember to link out to issues that these activities might be driving towards)

[CI] Create a Storybook deploy for each PR that has "storybook" checked

Following up on our conversation today:

What we can do is have a workflow/action that triggers the npm run storybook for that Netlify everytime that a person makes a change in a component and checks "Storybook" from the PR description:

Screen Shot 2022-07-11 at 6 03 03 PM

That way, we'd have both the Netlify link for the Portal, and for the Design System, and we don't have to manually push our WIP or blocked PRs to the main build of the design system.

I'll open an issue on this.

Originally posted by @pixelsbyeryc in #38 (comment)

[Research] Onboarding email

With onboarding now designed, we can start work towards getting a small cohort of users together. We need to do the following.

  • Research onboarding email tools
  • Create onboarding email copy - probably multiple emails, but we can start with one intro email
  • Implement email infrastructure.

[Front-End] Implement UI for User Login Component

Currently, the User Login Component is completely static with a static image and no drop down menu.

Image

This needs at least a drop down menu implemented with a user login link when the user is logged in and a user logout link when there is no logged in user.

This does not need to implement login functionality as yet but the UI needs to be functional and potentially testable with a dummy user.

[Bug] Update link to Storybook in README file

Currently in the README file, the link to storybook points to design-insight.opensauced.pizza. The link has been changed to design-insights.opensauced.pizza and needs to be reflected in the documentation.

[Front-End] Implement Dark Mode

Currently Tailwind requires us to add dark mode colors within the component. I think that makes it too unreadable and just a pain to maintain.

The way I set up the colors is:

colors: {
  light: {
    "slate": {
      "1": "hsl(206, 30.0%, 98.8%)",
      ...
      "12": "hsl(206, 24.0%, 9.0%)"
    },
    "slate-a": {
      "1": "hsla(210, 92.6%, 26.5%, 0.016)",
      ...
      "12": "hsla(202, 97.0%, 2.4%, 0.934)"
    }
  },
  dark: {
    "slate": {
      "1": "hsl(200, 7.0%, 8.8%)",
      ...
      "12": "hsl(210, 6.0%, 93.0%)"
    }
  }
}

There should be a way for us to use these color steps as CSS Variables, so when the theme changes, only the values in the CSS Variable change, not the classes in the components.

You only declare slate-1 once in the component, then the theme handles whether the color will be from the light or dark theme.

I'm opening a new issue, because this is not something we need to resolve in this PR, nor is it something urgent.

Originally posted by @pixelsbyeryc in #55 (comment)

[Design] Create a `<Button>` component

To design:

Create the button component that we can use for everything in our UI.

Button sizes:

  • sm Small
  • base Base
  • lg Large

Button types (for now we'll follow a similar structure to the Primer Design System):

  • default
  • primary
  • outline
  • danger
  • invisible

Props:

  • hasIcon: boolean
  • hideLabel: boolean
  • icon: <Icon> component
  • label: string
  • action ?

Other types of button, according to our needs:

  • Button with Dropdown
  • Button with Action Variants
  • Groups of Buttons

Implementation

[Design] Implement opinionated filters

We need a mock prior to the Digital ocean meeting with 5 filters. We can put this into Figma initially, but hopefully can scope this in a storybook story. Please don't take my design below as testament, but my thought is it can live above the participant cards or replace it entirely.

Screen Shot 2022-07-13 at 9 52 57 AM

Filter ideas (open to ideas)

  1. Top 1000 projects (based on stars)
  2. Projects with more than 5 contributors as of X date (note for API - this is limited to 1k repos)
  3. Projects with more than 1000 stars
  4. Most active - project with the most hacktoberfest labeled PRs
  5. Most spammed - project with the most invalid labeled PRs

update:
Context on why filter based on stars

Screen Shot 2022-07-13 at 10 19 20 AM

[CI] Add release automation for alpha and beta

Type of feature

๐Ÿ” CI

Current behavior

We will have more changes for this site in the future. It will be nice to implement beta and alpha release automation similar to all other projects.

Suggested solution

Implement

https://github.com/open-sauced/open-sauced/blob/main/.github/workflows/release.yml

Additional context

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

Contributing Docs

  • I agree to follow this project's Contribution Docs

[refactor] Improve current implementation of atoms

Currently out atoms, such as text, strong text and title, are wrappers around supabase ui components. Unfortunately, they don't allow anyone to pass props into the atom and have that prop passed down to the supabase components.

Ideally, the component should allow the props passed into the wrapper to be passed down to the supabase component. This would give more flexibility to the atom and also make it easier to maintain.

[Front-End] Implement Text primitives

Need to specify:

  • Type specs (Inter)
  • Text sizes

Typography

We're using the Inter font family as the product's typeface.

It can be found on Google Fonts: https://fonts.google.com/specimen/Inter, or downloaded from its website: https://rsms.me/inter/.

Text Sizes

The root font-size should be 16px.

We can use Tailwind font-size: https://tailwindcss.com/docs/font-size. We'll be using the same typographic scale as Tailwind's.

To find the correct size, you can select the text on Figma, and go to the Inspect tab, on the right panel.

Eg:
If the font-size is 14px, you can use the font-sm class from Tailwind.

Letter Spacing

Here's how the letter-spacing should be:

  • From text-base, and smaller: -0.01rem
  • Bigger than text-base: -0.03rem

Line Height

  • text-xs and text-sm: should be either leading-snug or leading-normal
  • text-base to text-xl: should be leading-snug or leading-tight
  • text-2xl up: should be leading-tight or leading-snug

[Front-End] Improve FilterCard

Tag Primitives

  • Need: preview of tag primitives, and their states.

Types of tag:

  • Default (can't be removed)
  • Filter (can be removed)

Screen Shot 2022-07-07 at 7 39 16 PM

Tag States:

These only apply to the filter tags. The default tags can't be changed, so they don't have states.

  • Default
  • Hover / Active
  • Focus

Screen Shot 2022-07-07 at 7 37 06 PM

Icons

We're using Github's Octicons to represent:

  • Repository: repo
  • Topic: hash
  • Organization: organization
  • Contributor: person

Screen Shot 2022-07-07 at 7 40 42 PM

[Front-end] Implement Progress Pie component

<svg id="boxoverview-total" class="pie-box" viewBox="0 0 20 20" height="20" width="20">
    <circle class="pie-circle" r="5" cx="10" cy="10" stroke-width="10" stroke-dasharray="calc(32 * 31.4 / 100) 31.4" style="transform: rotate(-90deg) translate(-20px);"></circle>
</svg>

To update the percentage, you replace a number inside the stroke-dasharray:

<circle stroke-dasharray="calc(<PERCENTAGE> * 31.4 / 100) 31.4" ...></circle>

Screen Shot 2022-07-18 at 6 13 36 PM

[Front-End] Implement Highlight Card Component

Image

This component is not currently available in the project and needs to be implemented. While the cards shown are examples of what the component will be used for in production, the single component should allow someone to implement all four cards without creating separate components.

This component should also be added to Storybook and allow for the changing of data in the component as well as icons passed into the component.

[Front-End] Implement Radix Colors

We're using Radix Colors for most of our designs. They have an easy implementation here: https://www.radix-ui.com/colors.

These are the colors:

  • Slate
  • Orange
  • Amber
  • Blue
  • Cyan
  • Grass
  • Red
  • Teal

Installing Radix UI Colors:

// with npm
npm install @radix-ui/colors

// with yarn
yarn add @radix-ui/colors

You can also pick the colors from this Figma file: https://www.figma.com/file/paPYxS00vWq3pqPh4EJAxi/Radix-Colors-(Community)?node-id=0%3A1

--

Needs from designer:

  • Flag which color palettes to use (we don't need all of them).

TOP 5 Week 28 July 11th

What are you planning to get done by the end of this week? (Remember to link out to issues that these activities might be driving towards)

[Front-End] Implement React Icons

Summary

Use React Icons to import any library of icons we need.

in hot we are using https://react-icons.github.io/react-icons/ and letting the vite optimiser dedupe imports and shake the tree - we should be able to use the same technique, in effect feel free to import any icons! ๐Ÿ•

@0-vortex - #63 (comment)

We're using icons from a few libraries:

  • Heroicons
  • Octicons

We need to either add them to our project or import them to our project. What would be best @bdougie @chadstewart?

These icons will be used in our <Icon> component from #62.

[Front-end] Implement Onboarding Flow

Summary

Implement the onboarding flow. When the user clicks to "log in", they will be forwarded to the onboarding steps, where they'll have to:

  1. Authenticate with GitHub
  2. Provide us an API Token
  3. Follow some repos/Tell us which repo they will want

Depends on these:

Available screens:

Here are the steps in the authentication flow.

Figma File

Onboarding Screens

Desktop
Desktop-1
Desktop-2
Desktop-3

Dashboard States

auth-version--03
auth-version--04

Originally posted by @pixelsbyeryc in #59 (comment)

Additional code for the progress pie:

This is the piece of code I'm using in HomeBills.

<svg id="boxoverview-total" class="pie-box" viewBox="0 0 20 20" height="20" width="20">
    <circle class="pie-circle" r="5" cx="10" cy="10" stroke-width="10" stroke-dasharray="calc(32 * 31.4 / 100) 31.4" style="transform: rotate(-90deg) translate(-20px);"></circle>
</svg>

To update the percentage, you replace a number inside the stroke-dasharray:

<circle stroke-dasharray="calc(<PERCENTAGE> * 31.4 / 100) 31.4" ...></circle>

[Front-End] Implement Selectable Row Table Component

Image
Image

Currently this component is not available in the project and needs to be implemented. The examples show are examples of what the table component could look like and the component should be able to handle all examples.

The table component should dynamically allow the adding of columns and labels for each column. It should allow for sizing to accommodate a certain amount of rows.

The component should also be added to Storybook and allow the adding of multiple columns and rows of data and potentially changing the header icon and the icon of the columns.

[Front-End] Improvements to User Avatar

These improvements are not urgent.

Ideally we want to:

  • Have a placeholder (it'd be nice to have those colorful avatars with the initials)
  • Have pre-defined Avatar sizes, like we have for the Title (<Title level={number}>)
  • Be able to set the border of the Avatar (we'll probably have to use the Tailwind ring class, because border will affect the spacing).

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.