Momentum logo
Team 8 Classroom

Ready Set Code!

Posted on Aug 6th, 2021

⚠️ Before you start writing code

Today should be used for finalizing planning and doing research on data, technology, and tools you might need.

The following checklists will help you know when you are ready to start writing code.

✅ Checklist for the whole team

  • Every team member is clear on your MVP, and you know exactly what you are building.
  • You have added user stories and tasks (at minimum, for MVP) to your Trello board.
    • Your tasks should reflect the decisions you have made about how you will implement things (i.e., they are specific and detailed).
    • Make sure your tasks are labeled according to what responsibilities belong to the front end or back end.
  • You have created a team organization on GitHub and added every team member.
  • You have created your project repo or repos on GitHub.
    • Make sure you have a .gitignore file! You can get one that is specific to your project at gitignore.io.
  • You are clear on the git and GitHub workflow for your team.
  • 🚨 Make sure you are using django-environ and a .env file. This will be especially important for secret keys and sensitive info, like AWS credentials. DON’T COMMIT YOUR SECRET KEYS!
  • Consider appointing a rotating team lead who can be responsible for running standup, leading at check-in, and looking after the Trello board.

✅ Checklist for the back-end

  • Make sure you are using Postgres and not SQLite.
  • Models! What models will you need?
    • What fields belong on those models? Use the Django Model Field Reference.
    • What relationships exist between your models? (one-to-many, many-to-many?)
      • Consider using the CRC model to help guide your discussions.
      • You should create a diagram for your models to map relationships. This may change as you work, but you should have a good plan to start with.
  • What URLs will the front end need?
  • What data will the front end request?
    • Are you returning HTML? -> What templates does the front end need, and who will make those?
    • Are you returning JSON? -> How will you structure your data?
  • Deploy early and often. Who will deploy? Make sure more than one person on your team has the ability to do this.

✅ Checklist for the front-end

  • Have you mapped out a user flow through your app?
  • Wireframes for each interface the user will see
    • With backend, can you say what URL corresponds to each page or interface the user sees?
    • If using React Router (with a separate front-end application), what urls do you need?
  • What data will you need on each page or interface? Where is it coming from?
    • What requests will you need to make from the front end?
  • Are you making forms? Discuss data with the backend.
  • What assets will you need?
  • General strategy for css and design so that you can budget time for it.
    • Are you using a css library (e.g. Material UI, Bulma, Tachyons)? What is the general look and feel of your app?
    • Start to think about UI/UX and design
  • Deploy early and often. Who will deploy? Make sure more than one person on your team has the ability to do this.

Reminders

  • Standup starts Monday 8/09 @9:30 am or @9:45 am (check your email for a cal invite)
  • First check-in Monday 8/09 @your assigned time (check your email for a cal invite)

Standup and check-ins will use this Zoom classroom.

Tasks & Trello

Posted on Aug 4th, 2021

Today’s topics

  • Finalizing your product idea
  • Defining users & writing user stories
  • Turning user stories into tasks
  • Creating your Trello board

Create tasks on your Trello board today

Your team’s trello board is ready with columns predefined to start you off. You are welcome to adapt it and create additional columns to support the way your team works.

Slides

🔖 Resources

Example Trello Boards

Product Decision & Planning

Posted on Aug 3rd, 2021

Today’s topics

  • Refining your product idea
  • Thinking about features and beginning to think about implementation
  • Creating a product roadmap
  • Writing user stories

TODO: Finalize your app idea

What is your app and what does it do?

One representative on behalf of your team should fill out this form by tomorrow to tell us what product you are building. Please make sure the responses represent everyone on your team.

Defining MVP and prioritizing features

Use these slides to guide your team discussions today. We’ll go over them in class, followed by time to work on creating your product roadmap with your team.

🔖 Resources

Welcome to Phase 4!

Posted on Aug 2nd, 2021

The past twelve weeks have prepared you to take on the challenge ahead in these next four weeks. Your goal is to design and build a real-world software product, working collaboratively on a small team using agile development practices and all the tools you’ve already learned – and some you will learn as you go.

At the end of the phase, your team will present your product to an audience of local tech professionals, hiring partners, and the Momentum community.

The experience of working on a team during this phase and the product you build will form the foundation for your job search after graduation. The people skills you’ll use will be just as important as the technical skills!

You will not begin writing code for your project until Thursday of this week.

Today’s topics

  • What is agile development?
  • Forming final project groups
  • Brainstorming product ideas

Slides

🔖 Resources

Idea Generation 💡

Agile Development

Tags: phase-4 agile

🐝 Search, Uploads, & Automatic Deploys 🐝

Posted on Jul 26th, 2021

Today’s Topics

  • Postgres full-text search
  • Automatic deploys with Heroku’s GitHub integration
  • File upload and Amazon S3

🎯 Project: QuestionBox is due on Thursday

By today you should have working endpoints for:

  • login and logout
  • registration
  • all questions
  • all questions for a single user (authenticated user; own questions only)
  • all answers for a single user (authenticated user; own answers only)
  • create a question (authenticated users only)
  • details for a single question
  • all answers for a single question
  • create an answer for a question (authenticated users only)

Depending on how you’ve constructed your API, you might have separate endpoints for all of the above, or you might have fewer endpoints (for instance, if you nested answers in the question detail endpoint). What matters is that your have endpoints your front-end team can use to access this data.

This week you should work on endpoints for:

  • search all questions
    • optionally search questions and answers
  • delete a question (for user who created the question)
  • mark an answer as accepted (only if you are the author of the associated question)
  • favorite/”star” a question (authenticated users only)

📖 Read | 📺 Watch | 🎧 Listen

🔖 Resources

@action decorator in ViewSets

File uploads

POST with upload using Insomnia

  • choose binary file attachment
  • headers (this example assumes an image file in jpeg format, named profile-photo .jpg):

    Content-Type: image/jpeg
    Content-Disposition: attachment; filename=profile-photo.jpg
    

For more information on the values for Content-Type:

CORS for file upload

Assuming you are using django-cors-headers, you’ll need to add the following to settings.py:


from corsheaders.defaults import default_headers

CORS_ALLOW_HEADERS = list(default_headers) + [
    'content-disposition',
]