Jumagura - Full Stack (Level 2) Pathway

Week 1 - Getting Started

1. Overview

Technical Area

  • Discourse, its purpose and use
  • WSL, install and run a GNU/LINUX(Ubuntu) environment in Windows
  • Installed Discourse using Docker
  • Creating a Rails small project
  • Git/Github, uploading and updating the rails project to its hosting service
  • Git/Heroku, uploading the rails project to a platform

Tools

  • STEAM-AWAY forum
  • WSL-2
  • Discourse
  • Youtube
  • Trello
  • Heroku
  • Github

Soft Skills

  • Learned the importance of communication with clients, partners and everyone to reach a goal in the project
  • Learned how crucial is to be well organized and scheduled
  • Self-motivation and discipline to complete each task
  • Active learning, search for other projects to improve learning about the subject
  • Problem solving, search for solutions to start different configurations
  • Schedule and having meetings to start working with the team

2. Achievements

  • Installed Discourse using Docker successfully trough the commands given
  • Kick-off meeting with the team
  • Making a Rails Project to improve knowledge and uploading it to a server.

3. Goals for the upcoming week

  • Learn more about Docker and its virtualization process
  • Learn more about Ruby on Rails, specially the MVC architecture
  • Learn the architecture of Discourse if information available

4. Detailed statement of completed tasks

Install WSL-2. This was a long process, but I didn’t encounter any difficulties. The instructions were clear to follow. Also, other users reported some difficulties that I didn’t encounter. I think the important step was update to WSL-2, in order to continue the installation process. In the final step of WSL installation, finding about Windows Terminal was a good surprise. It will be useful during the whole process of learning and beyond.

Installing Docker and Discourse. This was another long process, but not really difficult. I have some problems to start the server. But I could solve the obstacle searching similar content.

Create a GitHub/Heroku account. I am learning GitHub on my own, so I created my account before. I didn’t have any problems in this step. I also created a Heroku account to upload the rails project to its platform.

Get familiar with Ruby. Watching the videos, I learned that Ruby is an easy to learn language. Really simple implementation. I have a background in OOP that make learning the basic syntax easier.

Resource – Project Management. I learned about the importance of planification and schedule to finish task and projects. The use of Trello to organize tasks and goals.

1 Like

Week 2 - Dev Environment Setup

1. Overview

Technical Area

  • Discourse, its codebase
  • (Ubuntu) kernel environment in Windows. Improved knowledge of commands
  • EmberJS, creating a project
  • Docker, creating, deleting images, updating and solve problems
  • Ruby on Rails, MVC architecture

Tools

  • STEAM-AWAY forum
  • WSL-2 (Ubuntu 20.04)
  • Docker
  • Discourse
  • Trello
  • Github
  • Visual Studio Code

Soft Skills

  • Learn how to solve obstacles searching similar problems
  • Learn how to lead and coach team to reach a goal
  • Self-motivation and discipline to find solutions to problems encountered
  • Active learning, search for projects to improve learning about the subject
  • Using feedback to improve work with team

2. Achievements

  • Making a EmberJS project to understand better this framework
  • Daily scrum meetings for accountability and progress
  • Understand the basic structure of the Discourse codebase, especially themes.

3. Goals for the upcoming week

  • Learn more about Discourse theme and build a simple theme code structure
  • Improve our approach to Agile Framework, get to know our team better
  • Start working as a team in a simple theme development

4. Detailed statement of completed tasks

Install EmberJS framework. This was a long process I encountered different obstacles with installation and setting up a new project. The instructions were clear to follow. But some commands were throwing errors. Updating npm and kernel solved the problem. I improved my knowledge about command line during this process

EmberJS guides - Making a project. I read the tutorial they have online for installation and setup. One the installation and set up were ready. I didn’t encounter difficulties in this process. I followed the tutorial process to make a small project. I enjoyed this small project, especially the testing part. I found EmberJS has a really nice testing process.

SCSS guides. I did a project to learn SCSS before the internship, so this part was simple and didn’t encounter difficulties.

Docker. This week I learned how to stop and restart the server. How to delete images and containers that were not needed.

Leading a team. I helped some participant with Discourse setup and solve problems they encountered with their local installation. If we could not solve the problem, they would schedule a meeting with our mentors. We received feedback about our daily meetings, so we are making small improvements to make them more useful.

Week 3 - Developing Discourse Themes

1. Overview

Technical Area

  • Discourse codebase
  • DOM and Virtual DOM
  • (Ubuntu) WSL2.
  • Git CVS
  • Agile Framework

Tools

  • STEAM-AWAY forum
  • WSL-2 (Ubuntu 20.04)
  • Chrome DevTools
  • Docker
  • Discourse Theme CLI
  • Trello
  • GitHub
  • Visual Studio Code

Soft Skills

  • Learn to organize a project and separate task for each developer.
  • Learn to upload project to a CVS, therefore a remote team can work together.
  • Self-motivation to find solutions to problems encountered.
  • Learned about Open Source and contributions.
  • Communicate with participants, check progress and clarify doubts.

2. Achievements

  • Setup and watch a discourse theme in local machine.
  • Organize and divide work for the first project with participants.
  • Learn how to use better the browser developer tools.

3. Goals for the upcoming week

  • Finish the first project as a team.
  • Improve communication with the team.
  • Improve code review and debug for the final project, CVS.

4. Detailed statement of completed tasks

Discourse Theme CLI. The installation was simple. The guides to install, create a theme and watch a theme was simple. I didn’t encounter problems through this task

Discourse Theme Development. The meta discourse guides are clear about this subject. I started with something easy. Small modifications to the default theme. I cloned themes to read their code and see best practices when coding.

Chrome DevTools . I followed the reading and also found a YouTube tutorial about Chrome DevTools to see how each part of this tools works. The information was useful to identify CSS variables names. So, I can modify themes in discourse. This work was combined with Discourse Theme CLI.

Leading a team - Start project and divide tasks . With the knowledge of discourse themes. The leads agreed to start developing two simple themes in discourse with a toggle button. My task was to divide the work in simple tasks. I read code examples to separate the work, so the are no conflicts while developing the project. I created instructions and snapshots of the desired final result.

Leading a team - Create a repository for the project . After finishing the project code base. I uploaded it to the mentorchains account. Therefore, the repository is accessible to the whole team. I added the README.md file so the instructions are accessible to the participants.

Week 4 - Advanced Discourse Themes

1. Overview

Technical Area

  • Discourse codebase
  • JS, ES6
  • WSL2.
  • HTML
  • CSS
  • Git CVS
  • Agile Framework

Tools

  • STEAM-AWAY forum
  • WSL-2 (Ubuntu 20.04)
  • Chrome DevTools
  • Docker
  • Discourse Theme CLI
  • Trello
  • GitHub
  • Visual Studio Code
  • Discord Channel

Soft Skills

  • Learn to read documentation to find solutions to tasks.
  • Learn to find open-source code to solve problems.
  • Communicate with participants, check progress and clarify doubts.
  • Help other developers code and find solutions.

2. Achievements

  • Merge repositories to finish a side project with participants.
  • Finish a sprint goal with team.
  • Improve knowledge about theme modifiers.

3. Goals for the upcoming week

  • Prepare the tasks for the final project of team
  • Improve knowledge about Discord basecode
  • Improve communication with team

4. Detailed statement of completed tasks

Improve the theme to make use of plugin API. I did a simple script with help of guide. The instructions were clear, and I have knowledge of JavaScript, therefore this part wasn’t difficult to understand. I need to search for more examples to see what else can be accomplished.

Identify plugin outlet locations in Discourse and add in custom code in your theme below or above a plugin outlet location. Keegan did a step-by-step tutorial about this part of the project. Therefore, it was clear. Also, the extension that shows where can custom code be added made this task easier.

Read about and try to implement the Virtual DOM . This part is something I really enjoyed learning. Improving my knowledge in this area is great. Nonetheless I need to improve in this part. I found the instructions about widget clear. But I had problems finding where to locate the files and make them work. I had to review repositories to find examples.

Add a setting to your Discourse theme . The creation of this kind of customization was not difficult. Accessing this settings values in JS/CSS/Handlebars was simple too. I didn’t encounter difficulties in this task.

Add a localizable string to your theme. Adding custom languages and translations is something really useful. This a really useful tool for development. The way is implemented in Discourse makes it easy to use.

Use theme modifiers to add Font Awesome icon dependencies. I used Font Awesome in other projects before. I found them really useful and FA have a great design. I am glad FA can be used in Discourse. I didn’t encounter problems using them in my theme.

Finishing a side project with team FS3-June. We decided to make a side project to see how we could work as a remote team. We created two themes and a toggle button to switch between those themes. My role was creating and assigning tasks to participants, also upload the base code to GitHub. We divided the tasks between three smaller groups and merged the code together. I learned how to assign work better, review code, accept request and modify/correct code. A really great experience that prepared us for the main project we are about to start.

Week 5 - Discourse Plugin Development

1. Overview

Technical Area

  • HTML
  • CSS
  • Git
  • EmberJS
  • Ruby on Rails
  • AWS
  • Agile Framework

Tools

  • STEAM-AWAY forum
  • WSL-2 (Ubuntu 20.04)
  • Chrome DevTools
  • Docker
  • Discourse Plugin Generator
  • Trello
  • GitHub
  • Visual Studio Code
  • Discord Channel
  • Heroku
  • Amazon EC2

Soft Skills

  • Learn that overcommunication is better than supposition.
  • Learn the value of initiative during a project.
  • Learn to be more active to offer help to developers, instead of waiting for questions.
  • Motivate the team to reach a goal.
  • Learn the value of planning and researching before meetings.

2. Achievements

  1. Finish a plugin tutorial and learn basic steps to create a plugin
  2. Find resources to help developers to improve their knowledge
  3. Creating two personal rails projects following a tutorial

3. Goals for the upcoming week

  • Prepare the tasks for the final project of team
  • Divide teams according knowledge and skills.
  • Continue learning Ruby on Rails and EmberJS

4. Detailed statement of completed tasks

How to create a Discourse plugin. I followed the tutorial shared about creating a notebook plugin for discourse. It covers all aspects necessary to create a functional plugin. I learned the value of EmberJS and controllers. Also learned how to store data for plugins. I had some problems finishing the tutorial, but reviewing GitHub repositories helped to finish the tutorial.

How to use the plugin generator to setup a new plugin. I followed the instructions to generate a skeleton base for a plugin. It created many files that were confusing for my level of understanding. I had to review more documentation to understand and even delete files that I didn’t encounter necessary. Meta Discourse was really helpful during this task.

Leading the FS3 June Team. After finishing the side project, the leads had a meeting to identify the skills and knowledge of participants. I decided to give the participants a task to do the notebook plugin tutorial, it really helped me to learn how to develop a plugin and it will be useful for them. We set a time for a team meeting to decide which project we are developing for the internship.

Doing Ruby on Rails side projects . I created two simple RoR projects that taught me really important aspects of developing. I learned how to have a cloud IDE to develop RoR projects. I learned to use Git in a more active way, creating branches for different parts of the projects. I learned the difference between production and development environment. I also uploaded my project to a production environment with Heroku. I learned the value of having local and remote repositories and maintaining everything up-to-date. I learned the value of testing and how using tests makes developing faster, more secure and less likely to have errors.

Week 6 - Plugin Development Continued

1. Overview

Technical Area

  • HTML
  • CSS
  • Git
  • EmberJS
  • Ruby on Rails
  • AWS
  • Agile Framework

Tools

  • STEAM-AWAY forum
  • WSL-2 (Ubuntu 20.04)
  • Chrome DevTools
  • Docker
  • Discourse Plugin Generator
  • Trello
  • GitHub
  • Visual Studio Code
  • Discord Channel
  • Heroku
  • Amazon EC2

Soft Skills

  • Learn to be one step ahead to give guidance and help the team.
  • Learn to prepare lessons and teach important subjects to dev team.
  • Improve self-learning capacity.
  • Learn how to distribute project objectives when the technology used is not well known.

2. Achievements

  1. Teach dev team how Discourse Plugin works
  2. Having a sprint meeting to define objectives of the team.
  3. Creating skeleton code base for the project.

3. Goals for the upcoming week

  • Have daily scrum meetings for the project
  • Help devs with their tasks and improve their knowledge and skills
  • Continue learning Ruby on Rails and EmberJS

4. Detailed statement of completed tasks

Add some settings to your plugin. The tutorial was easy to follow. I applied this knowledge adding settings to the project plugin we are developing.

Holding a sprint meeting. As a team we decided to develop a plugin, because we already developed a theme with the side project. We needed more learning about RoR and EmberJS. Doing research, I learned that it is not unusual to start a project where the tasks are not clear for the dev team. The best approach was holding this meeting and define research objectives so we can assign those objectives to devs. For that to be clear first we shared with the team how the finish plugin would look like. After the project objective was clear, defining objectives was easier for the team. We set 8 hours of research. After that we would hold another meeting to redefine the objectives if that was needed.

Setup git for the plugin project. I had problems with this step. At first, I created a skeleton codebase for the plugin using the plugin generator, so the team can start working on their current branches. Because so many different files were created, the team didn’t know exactly which files were useful or not. The plugin generator created files and folders that were not similar to what we were learning. Therefore, I adapted and reworked the codebase to look familiar to devs. After that it was easier for the team to start working.

Setup tasks with Trello Board. I added more details to the objectives in the Trello board that was holding the objectives (defined in the sprint meeting). I set due dates and assign devs to individual objectives.

Holding a meeting with backend team. The backend team needed more time to do research and learn about how RoR and EmberJS works and their implementation in Discourse. I hold a meeting and provided capacitation about how MVC works in Discourse. I explained the backend team where each part has to be coded and where they could start working. I also provided tutorial and other resources for them to improve skills.

Improving personal knowledge about RoR. I continued learning RoR by finishing tutorials about this framework. This helped me a lot to understand Discourse better and read plugin repositories. I improved my knowledge about AWS, I learned how to solve a problem when memory storage was full. The tutorials also helped me to understand better Ruby. With that skills acquired, it was easier to follow examples and understand meta Discourse conversations. I also learned the value of using PostgreSQL in production environment and SQLite in development environment. I had a problem upload my project to Heroku because it didn’t accept SQLite in production. I learned PostgreSQL is a better implementation, and redefining that in the Gemfile solved the problem.

Week 7/8 - Putting it All Together (Capstone Project)

1. Overview

Technical Area

  • HTML
  • CSS
  • Git
  • EmberJS
  • Ruby on Rails
  • Agile Framework

Tools

  • STEAM-AWAY forum
  • WSL-2 (Ubuntu 20.04)
  • Chrome DevTools
  • Docker
  • Trello
  • GitHub
  • Visual Studio Code
  • Discord Channel
  • Slack Channel
  • Meta Discourse

Soft Skills

  • Learn to adapt project and welcome changes that are needed
  • Ability to learn complex subjects in short periods of time
  • Manage to hold meetings when needed and avoid them when asynchronous communication is enough

2. Achievements

  1. Merging frontend and backend branches, and solving merging problems
  2. Identifying and solve a problem that didn’t allow to trigger actions to store and show data, changing folder locations and file names.
  3. Redefine tasks for backend team after teaching them how to work with RoR.

3. Goals for the upcoming week

  • Preparing slides and plugin demonstration for the presentation
  • Manage that every participant contributes to the project in a significant amount.
  • Continue learning Ruby on Rails and EmberJS
  • Continue working on the project according to the corrections suggested at the presentation.

4. Detailed statement of completed tasks

Managing the team. I worked with the PM Lead to communicate personally with every participant to have accountability of their progress. Communicating with the Tech Lead so every dev has a local running environment to develop their part of the project. Reviewing the progress of backend and frontend team to see if changes are needed. Actively reviewing Trello board to review the progress of the project, redefining tasks if needed.

Merging branches to the main repository. Reviewing the frontend team code and changing hardcoded content with dynamic content using handlebars. Changing folder locations and file names that are needed to have actions working properly. Helping the backend team to finish their tasks. Solving conflicts after the merge.

Guiding the backend team. Finishing the backend objectives were really challenging. We didn’t have complete knowledge of the technology and framework. Therefore, we invested more time in research. I also hold another meeting to teach them how Ruby on Rails works. And make an introduction about how EmberJS works. We started reviewing other discourse plugin repositories to learn how to finish the project. We manage to store notes and successfully finished an objective for the project.

Doing styling corrections suggested in the presentation. I worked with the Tech Lead doing contributions to improve the style of the plugin. Inserting icons to replace words and making buttons smaller. Giving buttons default styles, therefore if changes are done in themes. It will be reflected in the plugin. Solving a problem with the plugin, plugin would not be clickable after scrolling a large page, solved adding index priority.