Skip to content

VikeLabs/starterpack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

VikeLabs W2022 Kickoff Starterpack

Welcome to VikeLabs! This repository is here to help you get you (or your team) started on the right foot for the 2022 season. This repository contains a few things:

  • Instructions on how to approach starting a project.
  • Basic example of a web application using TypeScript, React, and Next.js.

What is VikeLabs?

VikeLabs is a student-run organization at the University of Victoria that aims to provide students with the opportunity to work on real-world projects with industry partners. We are a student-run organization that is open to all students at UVic. We are a great way to get involved in the UVic community and to build your resume. We are always looking for new members, so if you are interested in joining, please reach out to us at .

If you are already part of a team, you can skip the content here. Feel free to use this as a reference though!

Joining a Project

If you are interested in a project, reach out to the project lead and ask to join the project. If you are not sure who to contact, reach out to the admin team on Discord and we can help you get in touch with the right person.

Starting a project

Starting a project is a difficult but rewarding task. You can approach this in a few different ways:

  • Start by finding a group of people who are interested in working on a project together.
  • Start by finding a problem that interests you and then find a group of people who are interested in working on it with you.

Use the VikeLabs Discord to help socialize and find people who are interested in working on a project with you.

The following channels are a good place to start:

  • #general - Part of the social-lounge category. This is a good place to start a conversation about a project you are interested in and have discussions.
  • #looking-for-team - Part of the team formation category. This is a good place to find people who are looking for a team to join. Here you can write a bit about yourself and what you are interested in working on etc.
  • #looking-for-members - Part of the team formation category. This is a good place to find people who are looking for a project to join. Here you can write a bit about the project you are working on and what you are looking for in a team member etc.

You're not limited to starting a project or finding people through these channels. Maybe you have a group of existing friends who would be interested or a study group that is keen to dive into a project.

🚨 If have done the above and aren't getting traction ask for help in our Discord! 🚨

Forming a Team

You'll want to start your team off with only a few people. We suggest around 3-4 people at max. This will help you get started in a lean fashion and avoid drowning in management. You can always expand your team later on if the situation calls for it.

Once you have formed a team, please fill out this form to let us know who is on your team. This will help us keep track of who is on what team and allow us to assist you with any resources you may need.

Brainstorming

Brainstorming is an important part of just about anything. It's a chance for ideas to be thrown around and for people to get excited about a project. It's also a chance to get a feel for what people are interested in working on and what they are good at.

We offer several tips for brainstorming:

  • Having some high level prompts can help get the ball rolling. Here are some examples:
    • What are some problems you have encountered in your life, work, or school?
  • Try to keep the brainstorming session focused on the problem and not the solution.
    • This will help you avoid getting stuck on a specific solution and will help you keep the scope of the project in check. Don't jump ahead to the solution too quickly.
  • Brainstorm individually and then come together to share your ideas.
    • This will help you avoid groupthink and will help you get a feel for what people are interested in working on.
  • Do not dismiss an idea because at this stage.
    • You can always scale back or scale up an idea. It's better to have a lot of ideas and then scale them back than to have no ideas at all. It also allows bouncing ideas off of each other.

Planning

Once you have a team and idea it's time to start planning. Planning is a very important part of any project. It's important to plan out what you want to do and how you want to do it. This will help you avoid a lot of headaches down the road. That being said, don't overplan. You don't want to spend too much time planning and not enough time actually building. It's important to have a plan, but it's also important to be flexible. Things will change, and you will need to adapt. That's okay. It's part of the process.

Minimal Viable Product (MVP)

A minimal viable product (MVP) is the smallest possible product that you can build to test your idea. It's important to build an MVP because it allows you to test your idea and see if it's worth pursuing. It also allows you to get feedback from users and stakeholders. This feedback can be used to improve your product and make it better.

In the context of VikeLabs, building an MVP helps keep the project scope manageable. The last thing you want that is too big and the you end up losing steam. You can always add more features later, but it's hard to remove features once they are built.

That said, you are in no way required to build an MVP. If you have a good idea and you think you can build it in a reasonable amount of time, then go for it! If you are unsure, then it's probably a good idea to build an MVP. Also, if you just want to get your hands on some new technologies, then do that too!

Examples

As a student, finding parking at the university is difficult. I wish there was an app that showed me where parking spots are available.

Consider what a MVP for this idea would look like. What features would it have? What would it look like? How would it work? What would it do? What would it not do?

  • Is it important to have a map? What about a list of parking spots?
  • Is it important to show the number of spots available or just if there are any spots available?
  • Is it important to show the exact location of the parking spot or just the parking lot?

As a student, I want to be able to see what courses are available in the upcoming semester so that I can plan my schedule.

This was a real idea from a real team (CourseUp). What would a MVP for this idea look like? What features would it have? What would it look like? How would it work? What would it do? What would it not do?

  • Is it important to show the course description?
  • Is it important to show the course prerequisites?
  • Is it important to show the course schedule?
  • Is showing scheduling conflicts important?
  • Is having user accounts important?

Thing about these questions and check out (CourseUp) and see what they did.

User Interface (UI) Design

A lot of time (but not always), your application will have a user interface. This is the part of your application that users will interact with. It's important to think about how you want your application to look and feel.

Doing this design process code can be a bit tricky. Therefore it's recommended that you do this design process before you start writing any code. This will help you avoid having to rewrite a lot of code later on. You can use tools like Figma to help you with this process or you can just use pen and paper. A whiteboard is also a good tool for this.

Examples

As a student, driving to the university is expensive so I want to find a way to carpool with other students.

What would the UI for this idea look like? What would it do? What would it not do? What is the first thing a user would see when they open the application? What would they do next? What would they do after that?

Project Management

When working on a team, it's important to have a way to manage your project. This is where project management tools come in. There are a lot of different project management tools out there. Some examples include:

We recommend using GitHub Issues/Projects because it's free and it's integrated with GitHub. This means that you can use GitHub Issues/Projects to manage your project and use GitHub to manage your code. This is a good way to keep everything in one place. Reach for other tools when you need them.

Code Management

It's important to have a way to manage your code. This is where code management tools come in. At VikeLabs, we use GitHub to manage our code and therefore we use Git to manage our code. Git is a version control system that allows you to track changes to your code. It also allows you to collaborate with other people on your code.

Learn the basics of Git and GitHub by following the GitHub Learning Lab.

🚨 Remember to ask for help if you need it on our Discord! 🚨

Building

Are you awake!? Congratulations on making it this far! You are now ready to start building your project. This section will cover some of the basics of building a web application. If you are already familiar with these technologies, feel free to skip this section. If you're not building a web application, feel free to skip this section.

If you're going to use another language, framework, or library ask in the Discord server for advice and consultation first with peers and admins.

If you've been following along, you will notice we have not talked about what technologies you should use. That's because it's up to you! You can use whatever technologies you want. That being said, we do have some recommendations.

Picking a Technology Stack

In software development, a technology stack is a collection of technologies that are used to build a product. For example, a technology stack for a web application might include:

  • HTML
  • CSS
  • JavaScript
  • Node.js
  • Express
  • MongoDB
  • Blood
  • Sweat
  • Tears

Given the state of web development, you can pick any word and it'll probably be a JavaScript framework or library. The last 3 are jokes, by the way.

Choosing a technology stack should be rooted in the project you're building unless you're using a technology stack that you're interested in learning.

  • If you're building an application that requires a lot of computation then picking a language like Python or C++ might be a good idea.
  • If you're building an application needs to be accessible from a lot of different devices then picking a language like JavaScript/TypeScript might be a good idea.

✅ Consider your goals as a team and pick a technology stack that will help you achieve them.

🚨 If you're confused about what to pick, ask in our Discord! 🚨

Example: Web Application with Next.js and sqlite3

We provide an example web application that uses Next.js and sqlite3. This example is meant to be a starting point for you to build your own web application. You can find the example in the example.md file.

Deploying

Deploy your projects early! Deploy your projects often!

This is a good rule of thumb to follow when building a project. Deploying your project early and often will help:

  • You and your team get feedback on your project.
  • You are able to share your project with others like your friends, family, and potential employers.
  • The team is able to see the progress you're making.
  • It helps catch bugs early on.

You can deploy your project to a variety of different places. Some examples include:

  • Vercel
    • VikeLabs uses Vercel to deploy our projects. Let an admin know if you want to deploy your project to Vercel.
  • GitHub Pages
    • GitHub Pages is a free service that allows you to deploy static websites to GitHub. Single page apps and static websites are a good fit for GitHub Pages. Anything that requires a server is not a good fit for GitHub Pages.
  • Fly.io
    • Fly.io is a free service that allows you to deploy web applications to Fly.io. Fly.io is a good fit for web applications that require a server.

About

VikeLabs W2022 Kickoff Starterpack

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published