├── integração.java ├── src ├── main │ └── java │ │ ├── integração.java │ │ └── com │ │ └── bulletinfotech │ │ └── licitacao │ │ ├── service │ │ ├── CertificateService.java │ │ └── ApiService.java │ │ ├── controller │ │ └── AuthController.java │ │ ├── LicitacaoApp.java │ │ ├── model │ │ ├── Pregao.java │ │ └── ConfiguracaoDisputa.java │ │ └── view │ │ ├── MainFrame.java │ │ └── LoginFrame.java ├── com │ └── bulletinfotech │ │ └── licitacao │ │ ├── LicitacaoApp.java │ │ ├── model │ │ ├── Pregao.java │ │ └── ConfiguracaoDisputa.java │ │ └── view │ │ └── MainFrame.java └── test │ └── java │ └── com │ └── bulletinfotech │ └── licitacao │ └── LicitacaoAppTest.java ├── .gitattributes ├── target ├── maven-archiver │ └── pom.properties └── maven-status │ └── maven-compiler-plugin │ └── compile │ └── default-cli │ ├── createdFiles.lst │ └── inputFiles.lst ├── static-analysis.datadog.yml ├── .idea ├── vcs.xml ├── .gitignore ├── misc.xml ├── compiler.xml └── jarRepositories.xml ├── .vscode └── settings.json ├── .gitignore ├── .github ├── workflows │ └── ant.yml └── FUNDING.yml ├── LICENSE ├── pom.xml └── README.md /integração.java: -------------------------------------------------------------------------------- 1 | será que funfa meu nobre? 2 | -------------------------------------------------------------------------------- /src/main/java/integração.java: -------------------------------------------------------------------------------- 1 | // será que funfa meu nobre? 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /target/maven-archiver/pom.properties: -------------------------------------------------------------------------------- 1 | artifactId=licitacao-app 2 | groupId=com.bulletinfotech 3 | version=1.0-SNAPSHOT 4 | -------------------------------------------------------------------------------- /static-analysis.datadog.yml: -------------------------------------------------------------------------------- 1 | schema-version: v1 2 | rulesets: 3 | - java-best-practices 4 | - java-code-style 5 | - java-security 6 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Editor-based HTTP Client requests 5 | /httpRequests/ 6 | # Datasource local storage ignored files 7 | /dataSources/ 8 | /dataSources.local.xml 9 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "java.compile.nullAnalysis.mode": "automatic", 3 | "java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx2G -Xms100m -Xlog:disable" 4 | } -------------------------------------------------------------------------------- /src/main/java/com/bulletinfotech/licitacao/service/CertificateService.java: -------------------------------------------------------------------------------- 1 | 2 | package com.bulletinfotech.licitacao.service; 3 | 4 | public class CertificateService { 5 | 6 | public static void importCertificate(String filePath) { 7 | // TODO: Implement certificate import logic 8 | System.out.println("Importing certificate from: " + filePath); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/bulletinfotech/licitacao/service/ApiService.java: -------------------------------------------------------------------------------- 1 | 2 | package com.bulletinfotech.licitacao.service; 3 | 4 | public class ApiService { 5 | 6 | public static void connectToPortalApi(String portal, String token) { 7 | // TODO: Implement actual connection to portal's API 8 | System.out.println("Connecting to API of portal: " + portal); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # Log file 5 | *.log 6 | 7 | # BlueJ files 8 | *.ctxt 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.nar 17 | *.ear 18 | *.zip 19 | *.tar.gz 20 | *.rar 21 | 22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 23 | hs_err_pid* 24 | replay_pid* 25 | -------------------------------------------------------------------------------- /src/com/bulletinfotech/licitacao/LicitacaoApp.java: -------------------------------------------------------------------------------- 1 | 2 | package com.bulletinfotech.licitacao; 3 | 4 | import com.bulletinfotech.licitacao.view.MainFrame; 5 | 6 | import javax.swing.*; 7 | 8 | public class LicitacaoApp { 9 | public static void main(String[] args) { 10 | SwingUtilities.invokeLater(() -> { 11 | MainFrame mainFrame = new MainFrame(); 12 | mainFrame.setVisible(true); 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bulletinfotech/licitacao/controller/AuthController.java: -------------------------------------------------------------------------------- 1 | 2 | package com.bulletinfotech.licitacao.controller; 3 | 4 | public class AuthController { 5 | 6 | public static void authenticate(String cnpj, String password, String portal) { 7 | // TODO: Implement actual API calls for authentication based on selected portal 8 | System.out.println("Authenticating for portal: " + portal + " with CNPJ: " + cnpj); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/bulletinfotech/licitacao/LicitacaoApp.java: -------------------------------------------------------------------------------- 1 | 2 | package com.bulletinfotech.licitacao; 3 | 4 | import com.bulletinfotech.licitacao.view.MainFrame; 5 | 6 | import javax.swing.*; 7 | 8 | public class LicitacaoApp { 9 | public static void main(String[] args) { 10 | SwingUtilities.invokeLater(() -> { 11 | MainFrame mainFrame = new MainFrame(); 12 | mainFrame.setVisible(true); 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /target/maven-status/maven-compiler-plugin/compile/default-cli/createdFiles.lst: -------------------------------------------------------------------------------- 1 | com\bulletinfotech\licitacao\view\LoginFrame$2.class 2 | com\bulletinfotech\licitacao\service\ApiService.class 3 | com\bulletinfotech\licitacao\LicitacaoApp.class 4 | com\bulletinfotech\licitacao\service\CertificateService.class 5 | com\bulletinfotech\licitacao\view\LoginFrame$1.class 6 | com\bulletinfotech\licitacao\view\MainFrame.class 7 | com\bulletinfotech\licitacao\controller\AuthController.class 8 | com\bulletinfotech\licitacao\model\ConfiguracaoDisputa.class 9 | com\bulletinfotech\licitacao\view\LoginFrame.class 10 | -------------------------------------------------------------------------------- /target/maven-status/maven-compiler-plugin/compile/default-cli/inputFiles.lst: -------------------------------------------------------------------------------- 1 | C:\PROJETOS\Arremate-certo\src\main\java\com\bulletinfotech\licitacao\view\MainFrame.java 2 | C:\PROJETOS\Arremate-certo\src\main\java\integração.java 3 | C:\PROJETOS\Arremate-certo\src\main\java\com\bulletinfotech\licitacao\LicitacaoApp.java 4 | C:\PROJETOS\Arremate-certo\src\main\java\com\bulletinfotech\licitacao\service\ApiService.java 5 | C:\PROJETOS\Arremate-certo\src\main\java\com\bulletinfotech\licitacao\controller\AuthController.java 6 | C:\PROJETOS\Arremate-certo\src\main\java\com\bulletinfotech\licitacao\view\LoginFrame.java 7 | C:\PROJETOS\Arremate-certo\src\main\java\com\bulletinfotech\licitacao\model\ConfiguracaoDisputa.java 8 | C:\PROJETOS\Arremate-certo\src\main\java\com\bulletinfotech\licitacao\service\CertificateService.java 9 | -------------------------------------------------------------------------------- /src/com/bulletinfotech/licitacao/model/Pregao.java: -------------------------------------------------------------------------------- 1 | 2 | package com.bulletinfotech.licitacao.model; 3 | 4 | public class Pregao { 5 | private String descricao; 6 | private String situacao; 7 | private double valorProposto; 8 | 9 | public Pregao(String descricao, String situacao, double valorProposto) { 10 | this.descricao = descricao; 11 | this.situacao = situacao; 12 | this.valorProposto = valorProposto; 13 | } 14 | 15 | public String getDescricao() { return descricao; } 16 | public String getSituacao() { return situacao; } 17 | public double getValorProposto() { return valorProposto; } 18 | 19 | public void setDescricao(String descricao) { this.descricao = descricao; } 20 | public void setSituacao(String situacao) { this.situacao = situacao; } 21 | public void setValorProposto(double valorProposto) { this.valorProposto = valorProposto; } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/bulletinfotech/licitacao/model/Pregao.java: -------------------------------------------------------------------------------- 1 | 2 | package com.bulletinfotech.licitacao.model; 3 | 4 | public class Pregao { 5 | private String descricao; 6 | private String situacao; 7 | private double valorProposto; 8 | 9 | public Pregao(String descricao, String situacao, double valorProposto) { 10 | this.descricao = descricao; 11 | this.situacao = situacao; 12 | this.valorProposto = valorProposto; 13 | } 14 | 15 | public String getDescricao() { return descricao; } 16 | public String getSituacao() { return situacao; } 17 | public double getValorProposto() { return valorProposto; } 18 | 19 | public void setDescricao(String descricao) { this.descricao = descricao; } 20 | public void setSituacao(String situacao) { this.situacao = situacao; } 21 | public void setValorProposto(double valorProposto) { this.valorProposto = valorProposto; } 22 | } -------------------------------------------------------------------------------- /.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /.github/workflows/ant.yml: -------------------------------------------------------------------------------- 1 | name: Java CI 2 | 3 | on: 4 | push: 5 | branches: [ "main" ] 6 | pull_request: 7 | branches: [ "main" ] 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - uses: actions/checkout@v3 15 | - name: Set up JDK 17 16 | uses: actions/setup-java@v3 17 | with: 18 | java-version: '17' 19 | distribution: 'zulu' 20 | - name: Cache Maven packages 21 | uses: actions/cache@v3 22 | with: 23 | path: ~/.m2 24 | key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} 25 | restore-keys: | 26 | ${{ runner.os }}-maven- 27 | - name: Build with Maven 28 | run: mvn clean install -DskipTests 29 | - name: Build with Ant 30 | run: | 31 | ant -noinput -buildfile build.xml 32 | java -cp target/classes com.bulletinfotech.licitacao.LicitacaoApp 33 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: bulletdev # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 12 | polar: # Replace with a single Polar username 13 | buy_me_a_coffee: # Replace with a single Buy Me a Coffee username 14 | thanks_dev: # Replace with a single thanks.dev username 15 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 16 | -------------------------------------------------------------------------------- /src/com/bulletinfotech/licitacao/model/ConfiguracaoDisputa.java: -------------------------------------------------------------------------------- 1 | 2 | package com.bulletinfotech.licitacao.model; 3 | 4 | public class ConfiguracaoDisputa { 5 | private boolean modoConservador; 6 | private int casasDecimais; 7 | private double valorLimite; 8 | 9 | public ConfiguracaoDisputa(boolean modoConservador, int casasDecimais, double valorLimite) { 10 | this.modoConservador = modoConservador; 11 | this.casasDecimais = casasDecimais; 12 | this.valorLimite = valorLimite; 13 | } 14 | 15 | public boolean isModoConservador() { return modoConservador; } 16 | public int getCasasDecimais() { return casasDecimais; } 17 | public double getValorLimite() { return valorLimite; } 18 | 19 | public void setModoConservador(boolean modoConservador) { this.modoConservador = modoConservador; } 20 | public void setCasasDecimais(int casasDecimais) { this.casasDecimais = casasDecimais; } 21 | public void setValorLimite(double valorLimite) { this.valorLimite = valorLimite; } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/bulletinfotech/licitacao/model/ConfiguracaoDisputa.java: -------------------------------------------------------------------------------- 1 | 2 | package com.bulletinfotech.licitacao.model; 3 | 4 | public class ConfiguracaoDisputa { 5 | private boolean modoConservador; 6 | private int casasDecimais; 7 | private double valorLimite; 8 | 9 | public ConfiguracaoDisputa(boolean modoConservador, int casasDecimais, double valorLimite) { 10 | this.modoConservador = modoConservador; 11 | this.casasDecimais = casasDecimais; 12 | this.valorLimite = valorLimite; 13 | } 14 | 15 | public boolean isModoConservador() { return modoConservador; } 16 | public int getCasasDecimais() { return casasDecimais; } 17 | public double getValorLimite() { return valorLimite; } 18 | 19 | public void setModoConservador(boolean modoConservador) { this.modoConservador = modoConservador; } 20 | public void setCasasDecimais(int casasDecimais) { this.casasDecimais = casasDecimais; } 21 | public void setValorLimite(double valorLimite) { this.valorLimite = valorLimite; } 22 | } 23 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Michael Bullet 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/main/java/com/bulletinfotech/licitacao/view/MainFrame.java: -------------------------------------------------------------------------------- 1 | 2 | package com.bulletinfotech.licitacao.view; 3 | 4 | import javax.swing.*; 5 | import java.awt.event.ActionEvent; 6 | import java.awt.event.ActionListener; 7 | 8 | public class MainFrame extends JFrame { 9 | 10 | public MainFrame() { 11 | setTitle("Arremate Certo"); 12 | setSize(900, 700); 13 | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 14 | initMenu(); 15 | } 16 | 17 | private void initMenu() { 18 | JMenuBar menuBar = new JMenuBar(); 19 | 20 | // Menu "Opções" 21 | JMenu menuOpcoes = new JMenu("Opções"); 22 | JMenuItem adicionarPregao = new JMenuItem("Adicionar Pregão"); 23 | JMenuItem removerPregao = new JMenuItem("Remover Pregão Encerrado"); 24 | JMenuItem buscarPregao = new JMenuItem("Buscar Pregão"); 25 | JMenuItem sair = new JMenuItem("Sair"); 26 | menuOpcoes.add(adicionarPregao); 27 | menuOpcoes.add(removerPregao); 28 | menuOpcoes.add(buscarPregao); 29 | menuOpcoes.addSeparator(); 30 | menuOpcoes.add(sair); 31 | 32 | // Menu "Ações da Disputa" 33 | JMenu menuAcoes = new JMenu("Ações da Disputa"); 34 | JMenuItem iniciarDisputa = new JMenuItem("Iniciar"); 35 | JMenuItem pararDisputa = new JMenuItem("Parar"); 36 | JMenuItem lanceManual = new JMenuItem("Lance Manual"); 37 | menuAcoes.add(iniciarDisputa); 38 | menuAcoes.add(pararDisputa); 39 | menuAcoes.add(lanceManual); 40 | 41 | menuBar.add(menuOpcoes); 42 | menuBar.add(menuAcoes); 43 | setJMenuBar(menuBar); 44 | 45 | // Ações dos itens de menu 46 | sair.addActionListener(e -> System.exit(0)); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/com/bulletinfotech/licitacao/view/MainFrame.java: -------------------------------------------------------------------------------- 1 | 2 | package com.bulletinfotech.licitacao.view; 3 | 4 | import javax.swing.JFrame; 5 | import javax.swing.JMenu; 6 | import javax.swing.JMenuBar; 7 | import javax.swing.JMenuItem; 8 | 9 | public class MainFrame extends JFrame { 10 | 11 | public MainFrame() { 12 | setTitle("Arremate Certo"); 13 | setSize(1366, 768); 14 | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 15 | initMenu(); 16 | } 17 | 18 | private void initMenu() { 19 | JMenuBar menuBar = new JMenuBar(); 20 | 21 | // Menu "Opções" 22 | JMenu menuOpcoes = new JMenu("Opções"); 23 | JMenuItem adicionarPregao = new JMenuItem("Adicionar Pregão"); 24 | JMenuItem removerPregao = new JMenuItem("Remover Pregão Encerrado"); 25 | JMenuItem buscarPregao = new JMenuItem("Buscar Pregão"); 26 | JMenuItem sair = new JMenuItem("Sair"); 27 | menuOpcoes.add(adicionarPregao); 28 | menuOpcoes.add(removerPregao); 29 | menuOpcoes.add(buscarPregao); 30 | menuOpcoes.addSeparator(); 31 | menuOpcoes.add(sair); 32 | 33 | // Menu "Ações da Disputa" 34 | JMenu menuAcoes = new JMenu("Ações da Disputa"); 35 | JMenuItem iniciarDisputa = new JMenuItem("Iniciar"); 36 | JMenuItem pararDisputa = new JMenuItem("Parar"); 37 | JMenuItem lanceManual = new JMenuItem("Lance Manual"); 38 | menuAcoes.add(iniciarDisputa); 39 | menuAcoes.add(pararDisputa); 40 | menuAcoes.add(lanceManual); 41 | 42 | menuBar.add(menuOpcoes); 43 | menuBar.add(menuAcoes); 44 | setJMenuBar(menuBar); 45 | 46 | // Ações dos itens de menu 47 | sair.addActionListener(e -> System.exit(0)); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/test/java/com/bulletinfotech/licitacao/LicitacaoAppTest.java: -------------------------------------------------------------------------------- 1 | package com.bulletinfotech.licitacao; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import com.bulletinfotech.licitacao.model.Pregao; 5 | 6 | import static org.junit.jupiter.api.Assertions.assertEquals; 7 | import static org.junit.jupiter.api.Assertions.assertTrue; 8 | 9 | public class LicitacaoAppTest { 10 | @Test 11 | public void pregaoConstructorShouldInitializeFieldsCorrectly() { 12 | Pregao pregao = new Pregao("Description", "Open", 1000.0); 13 | assertEquals("Description", pregao.getDescricao()); 14 | assertEquals("Open", pregao.getSituacao()); 15 | assertEquals(1000.0, pregao.getValorProposto()); 16 | } 17 | 18 | @Test 19 | public void getDescricaoShouldReturnCorrectDescription() { 20 | Pregao pregao = new Pregao("Description", "Open", 1000.0); 21 | assertEquals("Description", pregao.getDescricao()); 22 | } 23 | 24 | @Test 25 | public void getSituacaoShouldReturnCorrectSituacao() { 26 | Pregao pregao = new Pregao("Description", "Open", 1000.0); 27 | assertEquals("Open", pregao.getSituacao()); 28 | } 29 | 30 | @Test 31 | public void getValorPropostoShouldReturnCorrectValorProposto() { 32 | Pregao pregao = new Pregao("Description", "Open", 1000.0); 33 | assertEquals(1000.0, pregao.getValorProposto()); 34 | } 35 | 36 | @Test 37 | public void setDescricaoShouldUpdateDescricao() { 38 | Pregao pregao = new Pregao("Description", "Open", 1000.0); 39 | pregao.setDescricao("New Description"); 40 | assertEquals("New Description", pregao.getDescricao()); 41 | } 42 | 43 | @Test 44 | public void setSituacaoShouldUpdateSituacao() { 45 | Pregao pregao = new Pregao("Description", "Open", 1000.0); 46 | pregao.setSituacao("Closed"); 47 | assertEquals("Closed", pregao.getSituacao()); 48 | } 49 | 50 | @Test 51 | public void setValorPropostoShouldUpdateValorProposto() { 52 | Pregao pregao = new Pregao("Description", "Open", 1000.0); 53 | pregao.setValorProposto(2000.0); 54 | assertEquals(2000.0, pregao.getValorProposto()); 55 | } 56 | } -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | com.bulletinfotech 5 | licitacao-app 6 | 1.0-SNAPSHOT 7 | jar 8 | 9 | 10 | 5.7.0 11 | 2.5.4 12 | 13 | 14 | 15 | 16 | 17 | org.junit.jupiter 18 | junit-jupiter-api 19 | ${junit.version} 20 | test 21 | 22 | 23 | org.junit.jupiter 24 | junit-jupiter-engine 25 | ${junit.version} 26 | test 27 | 28 | 29 | 30 | 31 | org.springframework.boot 32 | spring-boot-starter 33 | ${spring.boot.version} 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | org.springframework.boot 42 | spring-boot-maven-plugin 43 | ${spring.boot.version} 44 | 45 | 46 | 47 | 48 | org.apache.maven.plugins 49 | maven-compiler-plugin 50 | 3.8.1 51 | 52 | 17 53 | 17 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /src/main/java/com/bulletinfotech/licitacao/view/LoginFrame.java: -------------------------------------------------------------------------------- 1 | 2 | package com.bulletinfotech.licitacao.view; 3 | 4 | import javax.swing.*; 5 | import java.awt.*; 6 | import java.awt.event.ActionEvent; 7 | import java.awt.event.ActionListener; 8 | import java.util.Objects; 9 | 10 | public class LoginFrame extends JFrame { 11 | 12 | private final JTextField txtCnpj; 13 | private final JPasswordField txtPassword; 14 | private final JComboBox comboPortal; 15 | 16 | public LoginFrame() { 17 | setTitle("Login - Licitação"); 18 | setSize(400, 300); 19 | setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 20 | setLocationRelativeTo(null); 21 | 22 | JPanel panel = new JPanel(new GridLayout(5, 2, 10, 10)); 23 | 24 | panel.add(new JLabel("CNPJ:")); 25 | txtCnpj = new JTextField(); 26 | panel.add(txtCnpj); 27 | 28 | panel.add(new JLabel("Senha:")); 29 | txtPassword = new JPasswordField(); 30 | panel.add(txtPassword); 31 | 32 | panel.add(new JLabel("Portal:")); 33 | comboPortal = new JComboBox<>(new String[]{"ComprasNet", "Licitações-e", "Compras Públicas"}); 34 | panel.add(comboPortal); 35 | 36 | JButton btnImportCert = new JButton("Importar Certificado"); 37 | panel.add(btnImportCert); 38 | 39 | JButton btnLogin = new JButton("Login"); 40 | panel.add(btnLogin); 41 | 42 | add(panel, BorderLayout.CENTER); 43 | 44 | btnImportCert.addActionListener(new ActionListener() { 45 | @Override 46 | public void actionPerformed(ActionEvent e) { 47 | // TODO: Implement certificate import logic 48 | JOptionPane.showMessageDialog(null, "Função de Importar Certificado em desenvolvimento."); 49 | } 50 | }); 51 | 52 | btnLogin.addActionListener(new ActionListener() { 53 | @Override 54 | public void actionPerformed(ActionEvent e) { 55 | // TODO: Implement login action to authenticate with selected portal 56 | String cnpj = txtCnpj.getText(); 57 | char[] password = txtPassword.getPassword(); 58 | String portal = Objects.requireNonNull(comboPortal.getSelectedItem()).toString(); 59 | 60 | // Stub method call to AuthController for authentication 61 | // AuthController.authenticate(cnpj, new String(password), portal); 62 | JOptionPane.showMessageDialog(null, "Login em desenvolvimento."); 63 | } 64 | }); 65 | } 66 | 67 | public static void main(String[] args) { 68 | SwingUtilities.invokeLater(() -> { 69 | new LoginFrame().setVisible(true); 70 | }); 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ##

🏆 Arremate Certo 🏆

2 | 3 |

4 | 5 | [![Java CI](https://github.com/Bulletdev/Arremate-certo/actions/workflows/ant.yml/badge.svg)](https://github.com/Bulletdev/Arremate-certo/actions/workflows/ant.y) 6 | [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=Bulletdev_Arremate-certo&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=Bulletdev_Arremate-certo) 7 | [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=Bulletdev_Arremate-certo&metric=bugs)](https://sonarcloud.io/summary/new_code?id=Bulletdev_Arremate-certo) 8 |

9 | 10 |

11 | Arremate Certo é uma solução moderna de automação para licitações públicas e dispensas. 12 |

13 | 14 |

15 | 16 | 17 | 18 | 19 | 20 | 21 |

22 | 23 | 24 | ## 📋 Índice 25 | 1. [Status do Projeto](#-Status-do-projeto) 26 | 2. [Arquitetura do Projeto](#-arquitetura-do-projeto) 27 | - [Frontend (Vue.js)](#-Frontend ( Vue.js )) 28 | - [Backend (Go API)](#-Microserviços-em-Golang) 29 | - [Backend (Java API)](#-Backend ( Java API principal )) 30 | 31 | 3. [Funcionalidades Principais](#-funcionalidades-principais) 32 | 4. [Pré-requisitos](#️-pré-requisitos) 33 | 5. [Como Executar](#-como-executar) 34 | 6. [Contribuindo](#-contribuindo) 35 | 7. [Licença](#-licença) 36 | 8. [Suporte](#-suporte) 37 | 38 | 39 | ## 🏗️ Arquitetura do Projeto 40 | 41 | O projeto é dividido em dois componentes principais: 42 | 43 | ### Frontend ( Vue.js ) 44 | 45 | 46 | - Desenvolvido em vue 3 47 | - Interface do usuário intuitiva e responsiva 48 | - Vite: Ferramenta de build rápida para criar e executar o projeto 49 | - Pinia: para gerenciamento de estado para centralizar e otimizar o fluxo de dados da aplicação 50 | - Vue Router: Para gerenciar as rotas e navegação na aplicação 51 | - HTML e CSS: Para a estrutura e o estilo da interface 52 | 53 | ### Backend ( Java API principal ) 54 | 55 | - Desenvolvido em Java 17 com Spring Boot 3.2 56 | - Documentação OpenAPI/Swagger integrada 57 | - Persistência com JPA e PostgreSQL 58 | - Criptografia com Bouncy Castle 59 | 60 | ### Microserviços em Golang 61 | 62 | - Desenvolvido em Go 1.21 63 | - Framework Gin para alta performance 64 | - ORM com GORM 65 | - Configuração flexível via variáveis de ambiente 66 | - Captcha Solver com Wrapper 2Captcha e go-hcaptcha 67 | 68 | ## Funcionalidades Principais 69 | 70 | - 🔄 **Automação de Lances:** Defina regras personalizadas para lances automáticos 71 | - 📊 **Relatórios de Participação:** Geração de relatórios detalhados sobre o desempenho em cada licitação 72 | - 🔗 **Integração com Portais:** Conexão facilitada com diversos portais públicos e privados 73 | - 🔐 **Gestão de Dados:** Armazenamento seguro e eficiente das informações 74 | - 📈 **Performance Otimizada:** Backend em Go para processamento rápido de requisições 75 | 76 | ## Pré-requisitos 77 | 78 | ### Para a Aplicação Java 79 | 80 | - Java 17 ou superior 81 | - Gradle 82 | - IDE compatível com Spring Boot (recomendado: IntelliJ IDEA ) 83 | 84 | ### Para a API Go 85 | 86 | - Go 1.21 ou superior 87 | - PostgreSQL 88 | - Docker (opcional) 89 | 90 | ## Como Executar 91 | 92 | ### Aplicação Java 93 | 94 | ```bash 95 | cd java-app 96 | ./gradlew bootRun 97 | ``` 98 | A aplicação estará disponível em `http://localhost:8080` 99 | 100 | ### API Go 101 | ```bash 102 | cd go-api 103 | go mod tidy 104 | go run main.go 105 | ``` 106 | A API estará disponível em `http://localhost:8081` 107 | 108 | 109 | 110 | ## Contribuindo 111 | 112 | 1. Faça um fork do projeto 113 | 2. Crie uma branch: `git checkout -b feature/nova-funcionalidade` 114 | 3. Faça o commit das alterações: `git commit -m 'Adiciona nova funcionalidade'` 115 | 4. Envie para o repositório: `git push origin feature/nova-funcionalidade` 116 | 5. Crie um Pull Request 117 | 118 | ## Licença 119 | 120 | Distribuído sob a licença Apache 2.0. Veja `LICENSE` para mais informações. 121 | 122 | ## Suporte 123 | 124 | Em caso de dúvidas ou problemas, abra uma issue no repositório. 125 | 126 | 127 | ## Feito com 💙 por Michael Bullet 128 | --------------------------------------------------------------------------------