Giter Site home page Giter Site logo

mauricioromagnollo / proffy Goto Github PK

View Code? Open in Web Editor NEW
9.0 3.0 5.0 50.13 MB

👨‍🏫🧑‍🎓 Projeto Open Source desenvolvido utilizando React, Node e React Native, de uma plataforma de estudos online, onde conseguimos conectar alunos e professores para ter aulas online.

License: MIT License

HTML 0.94% TypeScript 76.10% CSS 21.68% JavaScript 1.28%
typescript react reactjs react-native nodejs node nextlevelweek proffy javascript

proffy's Introduction

BANNER

BADGE_LICENSE BADGE_WEB_REACT BADGE_MOBILE_REACT_NATIVE BADGE_SERVER_NODEJS BADGE_OPEN_SOURCE BADGE_NODE_VERSION BADGE_NPM_VERSION BADGE_OPEN_ISSUES BADGE_CLOSED_ISSUES BADGE_STARS BADGE_FORKS

Projeto Open Source desenvolvido na #NextLevelWeek da Rocketseat, utilizando TypeScript, React, React Native e Node.

PRINTS

🚀 OBJETIVO

O objetivo do projeto é criar uma plataforma de estudos, onde conseguimos conectar alunos e professores para realizarem aulas online.

📝 DESENVOLVIMENTO

💻 TECNOLOGIAS

Website (React + TypeScript)

* Veja o arquivo package.json do projeto Web.

Server (NodeJS + TypeScript)

* Veja o arquivo package.json do projeto Server.

Mobile (Expo + TypeScript)

* Veja o arquivo package.json do projeto Mobile.

Utilitários

🔧 CONFIGURAÇÃO DO AMBIENTE

Veja o arquivo de configuração do ambiente para saber como configurar corretamente a sua máquina para utilizar o projeto.

🍷 COMO UTILIZAR

Utilizando o Web

# Abrindo o diretório Web no terminal:
$ cd ./packages/web

# Instalando as dependências do package.json:
$ yarn

# Iniciando o projeto utilizando o script 'start' do package.json:
$ yarn start

O projeto será aberto em http://localhost:3000;

Utilizando o Server

Você precisa renomear o arquivo .env-example para .env e inserir as informações que condizem com o seu host:

$ cd ./packages/server
$ mv .env-example .env
# Abrindo o diretório do Server no terminal:
$ cd ./packages/server

# Instalando as dependências contidas no package.json:
$ yarn

# Iniciando o Server utilizando o script 'start' do package.json:
$ yarn start

# Instanciando as tabelas do banco de dados:
$ yarn knex:migrate

# Voltando a última alteração feita na tabela:
$ yarn knex:migrate:rollback

Utilizando o Mobile

Instale o aplicativo Expo no seu smartphone.

# Abrindo o terminal no diretório do mobile:
$ cd ./packages/mobile

# Executando o mobile no modo de desenvolvimento:
$ yarn start

Agora, abra o aplicativo do expo e no modo LAN faça o scan do QRCode.

Se tiver algum problema para executar o aplicativo nesse modo, tente desabilitar o firewall da sua máquina.

:octocat: COMO CONTRIBUIR

Siga as instruções do arquivo como contribuir para contribuir corretamente.

🌟 AGRADECIMENTOS

Next Level Week Rocketseat diego3g maykbrito

📚 REFERÊNCIAS

📃 LICENÇA

Esse repositório está licenciado pela MIT LICENSE. Para mais informações detalhadas, leia o arquivo LICENSE contido nesse repositório.

Feito com ❤️ por Maurício Romagnoli

Made by Rocketseat

proffy's People

Contributors

mauricioromagnollo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

proffy's Issues

#Feat: Proffy profile

After authenticating a teacher in the WEB application, you must allow him to view his profile and also allow him to edit some of his registration information;

To do this, implement a route on your backend to change the profile. He must be able to change the following information:

  • Change hours / days availability;
  • Change whatsapp number;
  • Change your bio;
  • Change your hourly value per class;

The user's profile will always appear in the data he registered on the page, "Give Classes", so always when entering your profile, fetch this information from the database to display it in the fields.

#Feat: Stylization of buttons and links

- Remove the click outline:

.page-header .top-bar-container a {
  outline: none;
}
.page-header .top-bar-container a {
  background: color....;
}

- Add a shadow effect when the button is clicked, giving depth effect

Example:

button {
  box-shadow: 2px 4px #000;
}
button:active {
   box-shadow: none;
}

#Feat: Viewing available teacher schedules

In your list of proffys, if you look at the layout, you will notice that all available teachers' schedules are displayed just below their bio. Implement this functionality.

For this, you need to bring, along with the teacher's data, the information of your available days making a join with the CLASS_SCHEDULE table to return this data along with the listing.

SQL no Node.js com Knex.js | Masterclass #13

#Feat: User authentication

Step by step

  • Create server functionality for the user to register by entering email and password;

    • Before saving the user's password to the database, remember to encrypt the password to keep it secure. For this, you can use the bcrypt library;
  • After allowing the creation of a password for all registered users, a route for user login is required. This route should validate the user's password in the database and a good strategy to keep the user logged in for a certain time is to use JWT tokens.

    • To keep the user logged on the cell phone, if he clicks the "Remember me" option, you can save the JWT token in the LocalStorage (Web) or AsyncStorage browser on your mobile application. If he does not select Remember, you can just keep him authenticated during a session (until you close the application).

References

#Feat: Saving your favorite proffys to the database

Now, you must save your favorite proffys to the database! For this, you can create a FAVORITES table that will save the id of your logged in user and the id of your favorite proffy.

So, every time you enter the favorite proffys page, you will have updated your favorite proffys.

#Feat: Pagination in the listing of proffys

The user connected to the application can view all available teachers on the platform, but displaying all teachers at once can be quite detrimental to the performance of your application.

To solve this problem, implement a pagination in the list of available teachers. This pagination must be done when searching for items in your api, and you can send information through the body of the request, for example "page": 1 so that you know which items to return from the database.

https://blog.rocketseat.com.br/scroll-infinito-no-react-native/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.