Skip to content

Virtual-Coffee/virtualcoffee.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Netlify Status

All Contributors

Virtual Coffee

Virtual Coffee is a laid-back conversation with developers twice a week. It's the conversation that keeps going in slack. It's the online events that support developers at all stages of the journey. It's the place where you go to make friends who all just happen to be in tech.

Anyone can join! Whether you're just thinking about getting into tech or have been in it for decades.

We know that growth comes at all levels and that no matter what stage of the journey you're on, you can teach and learn.

So come with a question or a topic to discuss, ask for feedback on your portfolio, answer another developer's question, or just sit back and listen to others talk about tech.

Our mission is to form community, allow room for growth and mentorship at all levels, and to provide a safe space for everyone interested in tech.

Please take a moment to read our Code of Conduct.

See you there!

Working on the site:

Table of Contents:

Local Development Setup

Steps to run the site locally for development or curiosity

1. Fork and clone the repository

Follow these steps to create a fork of this repository and clone it to your local machine.

2. Navigate to the repo directory

If you have just run git clone ... , the next step would be to move into the cloned repo:

cd virtualcoffee.io

3. Install dependencies

This repo requires node, pnpm, and the Netlify CLI to get started.

Installing node:

The best way to install node is to download the installer from their site. This repo requires node version 20.17.

If you already have a different version of node installed, but don't want to update globally, you can install a package called nvm, which will allow you to easily switch node versions. Once you have nvm installed (or if you already have it installed), you can run nvm use in the main directory and it will install the proper version of node.

Installing pnpm:

pnpm is a package manager that is used to install the rest of our dependencies.

Read more about pnpm on their docs site.

The best way to install pnpm for this project is by using Corepack, a new feature bundled with Node.

Install pnpm via corepack with the following commands:

corepack enable
corepack prepare

Setting up your .env

Use the following command to create a local .env file. Then open the new file (.env) and adjust any settings that are needed.

cp .env.example .env

Installing package dependencies

Once you have node, pnpm, and the Netlify CLI installed, you're ready to install the local dependencies! Run the following command:

pnpm install

At this point you're ready to roll! Run the following command to get rolling!

pnpm dev

Read more about what pnpm dev does in the following section.

Commands

The following commands are available for your use. Most of the time you'll only ever need pnpm dev.

pnpm dev

pnpm dev

This is the only command you need to do normal local development.

Starts a local server and watches your source files for changes. Use this to preview local development.

Once you run this command, a local server is running at http://localhost:9000! Any changes you make to the src folder should also re-build the site and re-load your browser.

You should see something like 'Server now ready on http://localhost:9000' below, which means the watcher is waiting to build your awesome changes!

Use ctrl-c to quit the server when you're done.

pnpm build

pnpm build

Builds a production-ready version of the site. This is what Netlify uses to build our site.

pnpm format

pnpm format

Runs Prettier on all of our files. This happens automatically via husky and lint-staged, so there's usually no need to run this manually.

pnpm lint

pnpm lint

Runs ESLint on all of our files, so you can check for errors or warnings. This happens automatically at build time.

Loading data

A lot of the data loaded on the site is from APIs that require private keys or tokens. Unfortunately we can't publish these or distribute them too widely.

All of the data points have mock data that is used if the required API key isn't present, so contributors should be able to make UX-related changes without needing them.

If you'd like to work on a feature that requires an API key, please reach out to a maintainer and we can probably get that going.

Adding content

Resources

Our VC Resources are created using MDX. MDX is basically a combination of Markdown and React.

Any files added to src/content/resources will be automatically loaded and added to the appropriate index page.

A good way to start adding a new page would be to copy one of the existing pages, then edit the details and content.

Newsletters

The newsletters (for now) are simply tsx files, and can be found in src/content/newsletters.

When you add a new issue, make sure to add it to the index. Here's how:

  • Open src/data/newsletters.ts
  • import the new issue
  • Add the new issue to the newsletters array.

So, if you have created src/content/newsletters/2022-03.jsx:

+ import { handle as issue202203 } from '@/content/newsletters/2022-03';
import { handle as issue202202 } from '@/content/newsletters/2022-02';
import { handle as issue202201 } from '@/content/newsletters/2022-01';

const newsletters = [
+ 	{ handleData: issue202203, slug: '2022-03' },
	{ handleData: issue202202, slug: '2022-02' },
	{ handleData: issue202201, slug: '2022-01' },
];

Monthly Challenges

Every month, our monthly challenge page will need to move the current challenge to the main portion of the list, and add the new challenge to the current challenge section.

To make the updates, go to src/app/monthlychallenges/page.tsx

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Aaron Pedwell
Aaron Pedwell

🖋
Abbey Perini
Abbey Perini

🖋
Adam Abundis
Adam Abundis

🖋
Ahmed Mohammed
Ahmed Mohammed

🖋
Aimee Wildstone
Aimee Wildstone

🖋
Aishat Ajose
Aishat Ajose

🖋
Aishe Ibrahim
Aishe Ibrahim

🖋
Aishwarya Mali
Aishwarya Mali

🖋
Alex Covone
Alex Covone

🖋
Alex Curtis-Slep
Alex Curtis-Slep

🖋
Alexander Batenhorst
Alexander Batenhorst

🖋
Alia Quintero
Alia Quintero

🖋
Amy Shackles
Amy Shackles

🖋
Andrea Martz
Andrea Martz

🖋
Andrew Bush
Andrew Bush

🖋
Andrew Goldstein
Andrew Goldstein

🖋
Angie Rodriguez
Angie Rodriguez

🖋
Anna Kim
Anna Kim

🖋
Anshuman Sathua
Anshuman Sathua

🖋
Anthony Beckford
Anthony Beckford

🖋
Arthur Doler
Arthur Doler

🖋
Arvin Fernandez
Arvin Fernandez

🖋
Aurelie Fomum
Aurelie Fomum

🖋
Aurelie Verrot
Aurelie Verrot

🖋
Aurelie Verrot
Aurelie Verrot

🖋
Avinash Upadhyaya K R
Avinash Upadhyaya K R

🖋
Ayu Adiati
Ayu Adiati

🖋 🐛
Ayush Chaudhary
Ayush Chaudhary

🖋
Barbara
Barbara

🖋
BekahHW
BekahHW

🖋
Bogdan Covrig
Bogdan Covrig

🖋 🐛
Brandon Brown
Brandon Brown

🖋 🐛
Brandon Everett
Brandon Everett

🖋
Brenna Hettler
Brenna Hettler

🖋
Brian Meeker
Brian Meeker

🖋
Bryan Healey
Bryan Healey

🖋
C0deR4t
C0deR4t

🖋
Caitlin Floyd
Caitlin Floyd

🖋
Carmen
Carmen

🖋
Cassidy Mountjoy
Cassidy Mountjoy

🖋
Chad Rhonan Stewart
Chad Rhonan Stewart

🖋
Chelsea Avery
Chelsea Avery

🖋
Chris Jarvis
Chris Jarvis

🖋
Christina Loiacono
Christina Loiacono

🖋
Christine Belzie
Christine Belzie

💻 🔧
Christopher Jin
Christopher Jin

🖋
Christopher Johnston
Christopher Johnston

🖋
Chuck
Chuck

🖋
Colleen
Colleen

🖋
Courtney Landau
Courtney Landau

🖋
Crime
Crime

🖋
Crislana Rafael
Crislana Rafael

🖋
Cristien Natal
Cristien Natal

🖋
Damon Holden
Damon Holden

🖋
Dan Ott
Dan Ott

🐛 ️️️️♿️
Dana Ottaviani
Dana Ottaviani

🖋
Daniel
Daniel

🖋
Daniel Anderson
Daniel Anderson

🖋
Daniel Cobo
Daniel Cobo

🖋
Dapo Adedire
Dapo Adedire

🖋
David
David

🖋
David Akim
David Akim

🖋
David Alpert
David Alpert

🖋
David Rodriguez
David Rodriguez

🖋
Debra-Kaye Elliott
Debra-Kaye Elliott

🖋
Dominic Duffin
Dominic Duffin

🖋 🐛
Ebony Louis
Ebony Louis

🖋
Enrique Hilst
Enrique Hilst

🖋
Eva Grace Smith
Eva Grace Smith

🖋
Fatima Olasunkanmi-Ojo
Fatima Olasunkanmi-Ojo

🖋
Gant Laborde
Gant Laborde

🖋
Gervanna Stephens
Gervanna Stephens

🖋
Glen McCallum
Glen McCallum

🖋
HDreikorn
HDreikorn

🖋
Habeeb Kareem
Habeeb Kareem

🖋
Imani Roberts
Imani Roberts

🖋
Jamaal Brown
Jamaal Brown

🖋
James Curran
James Curran

🖋
Jasmine
Jasmine

🖋
Jason Evans
Jason Evans

🖋
Jay Knowles
Jay Knowles

🖋
Jen Kennedy
Jen Kennedy

🖋
Jennifer
Jennifer

🖋
Jesse R Weigel
Jesse R Weigel

🖋
Jessica Wilkins
Jessica Wilkins

🖋
Joe Karow
Joe Karow

🖋 🐛
Joern Bernhardt
Joern Bernhardt

🖋
John Escamilla
John Escamilla

🖋
Jonathan Yeong
Jonathan Yeong

🖋
Joshua Shanks
Joshua Shanks

🖋
Julia Seidman
Julia Seidman

🖋
Justin Hager
Justin Hager

🖋
Justin Noel
Justin Noel

🖋
Justin Quinn
Justin Quinn

🖋
Justin Wheeler
Justin Wheeler

🖋
Kai Katschthaler (they/them)
Kai Katschthaler (they/them)

🖋
Kamal
Kamal

🖋
Karen Dickenson
Karen Dickenson

🖋
Kirk Shillingford
Kirk Shillingford

🖋
Klesta
Klesta

🖋
Konstantinos Bazoukis
Konstantinos Bazoukis

🖋
Laura Langdon
Laura Langdon

🖋
Laura OBrien
Laura OBrien

🖋
Lauren Perini
Lauren Perini

🖋
Lennox Gilbert
Lennox Gilbert

🖋
Leo
Leo

🖋
Lewis Sparlin
Lewis Sparlin

🖋
Logan McCamon
Logan McCamon

🖋
Lohit Yarra
Lohit Yarra

🖋
Lora Rusinouskaya
Lora Rusinouskaya

🖋
Lucia Cerchie
Lucia Cerchie

🖋
Luis Sanchez
Luis Sanchez

🖋
Madeline H
Madeline H

🖋
Manya Sharma
Manya Sharma

💻
Marie
Marie

🖋
Mary Lueder
Mary Lueder

🖋
Matt McInnis (he/him)
Matt McInnis (he/him)

🖋 🐛
Matt Wang
Matt Wang

🖋 🐛
MattCurcio
MattCurcio

🖋
Matthew
Matthew

🖋
Matthew Dean
Matthew Dean

🖋
Maylene Poulsen
Maylene Poulsen

🖋
Meg Gutshall
Meg Gutshall

🖋
Michael Honey-Arcement
Michael Honey-Arcement

🖋
Michael Jolley
Michael Jolley

🖋
Mike Rogers
Mike Rogers

🖋
Mike Street
Mike Street

🖋
Mohsin
Mohsin

🖋
Morris Anthony
Morris Anthony

🖋
Nath Duncan
Nath Duncan

🖋
Neil Italia
Neil Italia

🖋
Nerando Johnson
Nerando Johnson

🖋
Nick Taylor
Nick Taylor

🖋
Nicole Lee
Nicole Lee

🖋
Nikkhiel Seath
Nikkhiel Seath

🖋
Niklas Siefke
Niklas Siefke

🖋
Niko Hoffrén
Niko Hoffrén

🖋
Nora Fergany
Nora Fergany

🖋
Oteri Eyenike
Oteri Eyenike

🖋
Paceaux
Paceaux

🖋
Patricio Huerta
Patricio Huerta

🖋
Piotrek
Piotrek

🖋
Rad Turkin
Rad Turkin

🖋
Raeshelle Rose
Raeshelle Rose

🖋
Rahat Chowdhury
Rahat Chowdhury

🖋
Ramón Huidobro
Ramón Huidobro

🖋
Ray Deck
Ray Deck

🖋
Raynald Mirville
Raynald Mirville

🖋
Raynaldo Sutisna
Raynaldo Sutisna

🖋
Rebecca Key
Rebecca Key

🖋
Reda Baha
Reda Baha

🖋 🐛
Regina Robinson
Regina Robinson

🖋
Rishabh Singh
Rishabh Singh

🖋
Roger Gentry
Roger Gentry

🖋
Ruta R
Ruta R

🖋
Ryan Kahn
Ryan Kahn

🖋
Sadie
Sadie

🖋
Safety Vest 2789
Safety Vest 2789

🖋
Satoshi S.
Satoshi S.

🖋
Seth Hall
Seth Hall

🖋
Shannan Bunch
Shannan Bunch

🖋
Shannon
Shannon

🖋
Shelley McHardy
Shelley McHardy

🖋
Shraddha
Shraddha

🖋
Simon Prickett
Simon Prickett

🖋
Simon Robinson
Simon Robinson

🖋
Spike Vinz Cruz
Spike Vinz Cruz

🖋
Stephen Blais
Stephen Blais

🖋
Steve Carroll
Steve Carroll

🖋
Suchitra Giri
Suchitra Giri

🖋
Sumit Kharche
Sumit Kharche

🖋
SuperRoach
SuperRoach

🖋
Suraj Panchal
Suraj Panchal

🖋
Suze Shardlow
Suze Shardlow

🖋
Tami Hughes
Tami Hughes

🖋
Tammy Miller
Tammy Miller

🖋
Taryn McMillan
Taryn McMillan

🖋
Tiffany Pena
Tiffany Pena

🖋
Tiffany U
Tiffany U

🖋
Todd Libby
Todd Libby

🖋 ️️️️♿️
Tom Bousquet
Tom Bousquet

🖋
Tom Cudd
Tom Cudd

🖋
Tori Crawford
Tori Crawford

🖋
Travis Martin
Travis Martin

🖋
Typing Turtle
Typing Turtle

🖋
Vanessa
Vanessa

🖋
Vic Vijayakumar
Vic Vijayakumar

🖋
Vince Aggrippino
Vince Aggrippino

🖋
Vitaly Kovalev
Vitaly Kovalev

🖋
Yolanda Haynes
Yolanda Haynes

🖋
Yufa
Yufa

🖋
Yusuf Taiwo Hassan
Yusuf Taiwo Hassan

🖋
secondl1ght
secondl1ght

🖋
Álvaro Sánchez Taboada
Álvaro Sánchez Taboada

🖋
Add your contributions

This project follows the all-contributors specification. Contributions of any kind welcome!