✨Aplicação com as tecnologias mais demandadas do mercado.✨
- Java
- JavaScript
- Springboot
- React
- Html
- CSS
- Projetos backend e frontend
- Visual estático front end
-
Projeto Spring Boot criado no
Spring Initializr
com as seguintes dependências:- Web
- JPA
- H2
- Security
-
Ajuste no arquivo pom.xml:
git init
git add .
git commit -m "Project created"
git branch -M main
git remote add origin [email protected]:seuusuario/seurepositorio.git
git push -u origin main
yarn add [email protected] @types/[email protected]
import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
<DatePicker
selected={new Date()}
onChange={(date: Date) => {}}
className="dsmeta-form-control"
dateFormat="dd/MM/yyyy"
/>
const date = new Date(new Date().setDate(new Date().getDate() - 365));
- Implementar o back end
- Acesso a banco de dados
- Criar endpoints da API REST
- Integração com SMS
- Implantação na nuvem
- Postman
- Heroku CLI
import java.util.Arrays;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.CorsConfigurationSource;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.headers().frameOptions().disable();
http.cors().and().csrf().disable();
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
http.authorizeHttpRequests((auth) -> auth.anyRequest().permitAll());
return http.build();
}
@Bean
CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration().applyPermitDefaultValues();
configuration.setAllowedMethods(Arrays.asList("POST", "GET", "PUT", "DELETE", "OPTIONS"));
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
}
- Criar entidade Sale
- Fazer mapeamento objeto-relacional (JPA)
- Configurar dados de conexão do banco de dados H2
- Fazer seed do banco de dados
- Criar repository
- Criar service
- Criar controller
Consulta customizada:
@Query("SELECT obj FROM Sale obj WHERE obj.date BETWEEN :min AND :max ORDER BY obj.amount DESC")
Page<Sale> findSales(LocalDate min, LocalDate max, Pageable pageable);
Dependências Maven do Twilio
<dependency>
<groupId>com.twilio.sdk</groupId>
<artifactId>twilio</artifactId>
<version>8.31.1</version>
</dependency>
Variáveis de ambiente no application.properties:
twilio.sid=${TWILIO_SID}
twilio.key=${TWILIO_KEY}
twilio.phone.from=${TWILIO_PHONE_FROM}
twilio.phone.to=${TWILIO_PHONE_TO}
Arquivo system.properties
java.runtime.version=17
- Criar app no Heroku
- Definir variáveis de ambiente:
- TWILIO_SID
- TWILIO_KEY
- TWILIO_PHONE_FROM
- TWILIO_PHONE_TO
heroku -v
heroku login
heroku git:remote -a <nome-do-app>
git remote -v
git subtree push --prefix backend heroku main
- Integrar back end e front end
- Implantar o front end
yarn add [email protected]
Definição da BASE_URL:
export const BASE_URL = import.meta.env.VITE_BACKEND_URL ?? "http://localhost:8080";
-
Passando as datas como argumento
-
Enviar notificação
-
Mensagem Toast de confirmação
yarn add [email protected]
import { ToastContainer } from 'react-toastify';
import 'react-toastify/dist/ReactToastify.css';
- Deploy básico
- Base directory: frontend
- Build command: yarn build
- Publish directory: frontend/dist
- Variáveis de ambiente:
- VITE_BACKEND_URL