• Stars
    star
    734
  • Rank 60,434 (Top 2 %)
  • Language
  • License
    MIT License
  • Created over 5 years ago
  • Updated almost 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

✅ A checklist of things to do before releasing your project

logo

project-checklist

A checklist of things to do before releasing your project

The best projects sell themselves

🎨 Initial Presentation

Think of the README as the elevator pitch for your project. Keep it concise and to the point

  • Don't list out all the functionalities of your project as the first thing in the README
    • Recommendations
      • Showing users all the options they can do with something will confuse and/or overwhelm them
      • The first example you show should be the absolute most basic example that is working and copy-and-paste-able.
      • My definition of simplicity: something is simple when there is nothing left to take away from it
      • Don’t initially show users multiple ways of doing something. Show them only one way of doing it. Be careful which way you show them. Choose the way that they will use most of the time
      • It’s tempting to show your users all the things they can do with your project. In many cases, however, this will intimidate users (especially those that are new to the idea or the ecosystem)
  • Start by showing the most common functionalities first. If your project is an API, only initially show examples of the most common APIs that are used. If your project is an app, show screenshots of the pages that are most commonly used
  • Include a live demo. A video is a thousand pictures and a picture is a thousand words
  • Communicate your Value Proposition
  • Provide interactive examples. Having ready and runnable examples lowers the barrier to using and testing out your project
    • Recommendations
      • General Programs: consider using replit to provide live and runnable demos
      • Web Libraries: consider using codesandbox to provide live and runnable demos. For node, consider running them in runkit
      • Web Apps: Provide links to the hosted version of your app

💰 Value Proposition

A value proposition is a promise of value to be delivered, communicated, and acknowledged

Figure out the value your project brings to your users. What does it provide them that they don't have already?

  • Examples

    • React: Declarative, efficient, easy to use
    • Babel: Easy-to-use, pluggable
    • Yarn: Performance, ergonomics, reproducible installs
  • Recommendations

    • A value proposition can have multiple propositions
    • Having better performance than competing projects usually isn't enough to convince people to use your project. If you are using better performance as your only value proposition, consider adding other value propositions (see the tweet).
  • Decide what your value proposition is
  • Communicate your value proposition in your README and in your tagline

💯 Project Quality

High quality projects are much more likely to retain users over time

  • Be your own user. If you’re making a library, build an app that uses it. See what you like and dislike about your library from the perspective of a user
  • Before MVP (minimum viable product), all tests should be passing and docs with examples should be written and made available

👑 Branding

Make your project unique and memorable (most people only focus on technical aspects of a project). While this is important, this should be done close to finishing the MVP of a project

  • Name your project
    • Recommendations
      • Name your project something that is easy to remember
      • Try to make the name related to what you’re making
        • Examples
          • Parcel: “parcel” is the name of a bundler
          • React: “React” comes from reactive programming
          • Flow: “Flow” comes from flow graph inference
      • Single words or combining common words
        • Examples
          • React
          • ”micro-soft“
          • ”face-book“
          • ”web-pack“
      • Don’t worry too much about choosing a name and having a package with that name already taken. If your project becomes more popular than the project that has taken the name already, the owner of the package will usually give you the package name if not too many people are depending on it
  • Add a tagline
    • Recommendations
      • Avoid wordy taglines--they are hard to remember and understand
      • Your tagline should communicate your value proposition
    • Examples
      • React: A declarative, efficient, and flexible JavaScript library for building user interfaces
      • Babel: The compiler for writing next generation JavaScript
      • Yarn: Fast, reliable, and secure dependency management for JavaScript
  • Add a logo
    • Recommendations
      • Make sure your logo is one of the first things your audience sees when they see your project
      • Don’t use letter logos. Use images or icons that are similar to your project. For example, if your project is called joker, add a picture of a joker card instead of simply creating a logo with the word “joker”
      • Easily compress your logo with Squoosh
  • Choose a color theme
    • Examples
      • React’s is blue and light blue
      • Flow’s is yellow and gray
      • Make sure your docs and website follow this color theme
  • Further reading

✈️ Onboarding Methods

Lower the barrier to entry by providing the most “native” ways of onboarding people. Make it as easy as possible for users of competing projects to start using your project.

In general, here's how this works: say you have library y that competes with popular libray x, write documentation for a migration path from library x to y.

  • Examples
    • Figma, a vector graphics editor, gained users by allowing Sketch users to import Sketch files into Figma
    • Laravel onboarded many Rails users by providing terminology and conventions that were similar to Rails

🧹 Code Conventions and Infrastructure

Using standard code conventions and infrastructure lowers the barrier for people that want to contribute to your project. This sometimes translates to more contributors over time because initial contributors sometimes become long term contributors

  • Don’t use meaningless variable names or examples
  • Provide examples that are going to be similar to what users will use your library for
  • If you are making an assertion library, don’t make examples like so:
    • Bad: foo = checkIsUsername(a)
    • Better: username = checkIsUsername(user.username)
  • All examples should be standalone
  • A lot of users copy and paste examples just to see if they can get your project working. Having examples that can be copy and pasted and gotten working will lower the barrier to new users
  • In projects that are too complex to have standalone examples, at the least they can have standalone environments that they can run their examples in. Docker, for example, can be used to implement this well. Users can spin up a docker container and run their examples in the container instead of spending time getting their own environment set up

📣 Spread the Word

To maintain communication with existing users, use a newsletter. Consider using mailchimp for this.

🤑 Funding

Optional

  • Mention Related Projects
    • Listing projects that are related to your projects can help users with discovering other related projects
    • This is mostly for the purpose of spreading awareness and improving the connectedness of the community
    • For each project you list, provide the name of the project and a short description of it
    • Examples

More Repositories

1

eslint-plugin-compat

Check the browser compatibility of your code
TypeScript
3,045
star
2

reading

A list of computer-science readings I recommend
2,628
star
3

popcorn-time-desktop

🍿 🕐 🎞 A Modern Popcorn Time Client
TypeScript
458
star
4

eslint-plugin-flowtype-errors

Run Flow as an ESLint plugin
JavaScript
402
star
5

js-algorithms

A collection of algorithms written in javascript
JavaScript
226
star
6

awesome-web-audio

A list of resources and projects to help learn about audio
114
star
7

front-end-system-design

A checklist for front end system design
91
star
8

compat-db

A browser API compatibility database
JavaScript
63
star
9

drum-machine

A drum machine. Made with Vue and the WebAudio API.
Vue
51
star
10

alfred

A Modular Toolchain for JavaScript
TypeScript
42
star
11

erb-sqlite-example

An example of erb with native dependencies (sqlite3 in this case)
TypeScript
40
star
12

node-disk-utility

Quickly calculate the size of a folder or disk on macOS and Linux
Rust
30
star
13

erb-tailwind-example

TypeScript
21
star
14

erb-ant-design-example

JavaScript
19
star
15

clipboard

A better command line clipboard
Rust
17
star
16

xwing

An xwing WebGL game powered by three.js
JavaScript
16
star
17

erb-serialport-example

An example of using electron-react-boilerplate with serialport
TypeScript
15
star
18

freesound-client

A node and browser client freesound.org API v2
TypeScript
15
star
19

react-wavesurfer.js

React bindings for wavesurfer.js
TypeScript
11
star
20

erb-typescript-example

A fork of electron-react-boilerplate that adds Typescript integration
JavaScript
11
star
21

startups-101

Everything you need to know to start a startup
11
star
22

erb-second-renderer-window-example

JavaScript
10
star
23

erb-express-example

JavaScript
10
star
24

eslint-plugin-dom

Lint DOM API performance
JavaScript
9
star
25

ast-metadata-inferer

Given a list of API's, return their AST node type
TypeScript
8
star
26

babel-plugin-fail-explicit

A babel plugin that prevents coercion and silent failure in JavaScript
JavaScript
7
star
27

eslint-plugin-compat-demo

A minimal demo of eslint-plugin-compat
JavaScript
7
star
28

database_exporter

Export any database to any format
Rust
6
star
29

erb-bootstrap-example

An example of electron-react-boilerplate using sass and bootstrap.
JavaScript
6
star
30

joker

A modern and intuitive testing library for command-line apps
TypeScript
5
star
31

erb-local-fs-read-example

An exmaple of reading local files with node in production with erb.
JavaScript
5
star
32

oxide

Parallelisim and concurrency primatives for JS by leveraging immutability data structures
Rust
5
star
33

themoviedb

🎥🎬🍿 themoviedb API node client
JavaScript
4
star
34

awesome-node-cli-libraries

A list of libraries and infrastructure for building CLI's with node
4
star
35

eslint-config-bliss

An opinionated ESLint config general node development 🎉
JavaScript
4
star
36

erb-monorepo-example

JavaScript
4
star
37

contrast

A cross-platform diff tool
JavaScript
4
star
38

awesome-js-perf-readings

Awesome JS performance readings
3
star
39

awesome-javascript-tooling

A list of JavaScript tooling
3
star
40

os-type

Node bindings to the os_type Rust library
Rust
3
star
41

threejs-game

A toy game that I'm trying to make so that I can familiarize myself with threejs
JavaScript
3
star
42

erb-better-sqlite3-example

TypeScript
2
star
43

webgl-specs

Detect the graphics specs of a device using web APIs
JavaScript
2
star
44

esm-dep-check

Check if your dependencies are using ES6 modules
JavaScript
2
star
45

svg-zoom

A micro library that lets you zoom in on svg elements
HTML
2
star
46

erb-video-example

JavaScript
2
star
47

css-compat

Check the compatibility of a given css rule
JavaScript
2
star
48

kat-shows

DEPRECATED: A repo for scraping kat shows
JavaScript
2
star
49

erb-audio-example

A runnable example of electron-react-boilerplate importing audio files
JavaScript
2
star
50

popcorn-time-desktop-design

The design of UI components for popcorn-time-desktop
2
star
51

neon-benchmarks

A collection of benchmarks comparing performance differences between native node modules and Neon implementations
JavaScript
2
star
52

gridsound.github.io

This is the landing page of the GridSound project
CSS
2
star
53

react-skia-fiber

A React renderer for Skia
TypeScript
2
star
54

amilajack

my personal w̶e̶b̶s̶i̶t̶e̶ npm module
JavaScript
2
star
55

compat-db-rewrite

A scalable database of browser api compatibility
Rust
2
star
56

openvpn-client

JavaScript
2
star
57

cra-palette-example

JavaScript
1
star
58

parallel-scripts

JavaScript
1
star
59

sir-simulation

A disease spread simulation based on the SIR model
JavaScript
1
star
60

cs-data-structures-and-algorithms

Data Structures and Algorithms Homework and Problems
Java
1
star
61

sqlite

1
star
62

babel-plugin-fail-explicit-demo

A simple demo of babel-plugin-fail-explicit
JavaScript
1
star
63

react-tabs

Created with CodeSandbox
TypeScript
1
star
64

erb-pdf-example

An example of using a pdf viewer with electron-react-boilerplate
JavaScript
1
star
65

erb-electrino-example

JavaScript
1
star
66

safe-access-check

A micro library that prevents unsafe coercion and property access in javascript
JavaScript
1
star
67

erb-electron-remote-example

JavaScript
1
star
68

erb-cli

A CLI tool for electron-react-boilerplate
1
star
69

my-website

JavaScript
1
star
70

renovate-config-bliss

A renovate config optimized for minimal maintainer intervention
1
star
71

erb-redux-persist-example

JavaScript
1
star
72

vite-project

1
star
73

debugging-the-gender-gap

My presentation on addressing low percentages of women in the software industry
JavaScript
1
star
74

rust-algos

An ongoing collection of algorithms written in rust
Rust
1
star
75

erb-node-opencv-example

JavaScript
1
star
76

xwing-rewrite

A rewrite of amilajack/wing
JavaScript
1
star
77

dark-demo

A minimal runnable demo of Dark, a modern fork of commander.js
JavaScript
1
star
78

node-eztv-example

A clonable and runnable example repo for the eztv npm package
JavaScript
1
star
79

esbuild-as-a-service

TypeScript
1
star
80

awesome-webgl

1
star
81

state-of-nature-syntax

A simple and subtle syntax theme inspired by the beauty of nature
CSS
1
star
82

learning-webgl

A list of links for learning WebGL
1
star
83

threejs-playground

A playground for getting started with three-js
JavaScript
1
star
84

openframeworks-emscripten-wasm-example

A set of setup steps and tooling for running openframeworks with emscripten
1
star
85

serde_postgres

Easily Deserialize Postgres rows.
Rust
1
star
86

gaussify

Fast and intuitive library for creating efficient blurred UI's
JavaScript
1
star
87

naming-things

A guide for naming things
1
star
88

fuzzy-phrase

Fast fuzzy phrase matching, designed for use with https://github.com/mapbox/carmen
Rust
1
star
89

resume

My resume
1
star
90

spectrogram

A spectrogram implementation in js
JavaScript
1
star
91

webgl-sdf-demo

The source for Will Dobbie's Warn and Peace WebGL demo
HTML
1
star
92

quill-browserify-example

JavaScript
1
star
93

rust-bindgen-example

A working example of the rust-bindgen walkthrough
Rust
1
star
94

compat-test-runner

Given a compat record, return if the API is supported or not
JavaScript
1
star
95

erb-testcafe-example

A fork of electron-react-boilerplate that uses testcafe for e2e tests
JavaScript
1
star
96

linear-programming-with-julia

A simple linear programming example with julia and JuMP
Julia
1
star