Skip to content

gmsdev04/beststore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Iniciativa BestStore

Este projeto consiste na criação de um sistema de gestão de vendas e produtos gratuito com o intuito da obtenção de dados de valores de produtos e localização dos mesmos. Obter uma rede social de busca de produtos e divulgações como um jornal virtual

Arquitetura

A arquitetura do sistema é baseada em serviços, mais especificamente RestFull. O sistema deve ser composto por modulos apartados sendo eles :

Modulos

O sitema será dividido em dois tipos, projetos de dominios e STS (Security Token Service). Para cada dominio da aplicação deverá ser desenvolvido um projeto apartado que manterá os micro serviços operantes de forma granular, o STS ficará responsável pelo gerenciamento dos tokens de consumo dos dominios publicaodos.

Dominios

  • pessoas
  • lojas
  • produtos
  • acessos
  • vendas
  • tokens
  • caixas

Rotas

  • /apis/v1/lojas
  • /apis/v1/lojas/{id_loja}
  • /apis/v1/lojas/{id_loja}/telefones
  • /apis/v1/lojas/{id_loja}/telefones/{id_telefone}
  • /apis/v1/lojas/{id_loja}/emails
  • /apis/v1/lojas/{id_loja}/emails/{id_email}
  • /apis/v1/lojas/{id_loja}/produtos
  • /apis/v1/lojas/{id_loja}/produtos/{id_produto}
  • /apis/v1/tokens

Tecnologias

Função Tecnologia
Sistema operacional servidores Linux
Cache Redis
Banco de dados CassandraDB
Container Docker
Container Orchestor Kubernetes
Cloud AWS
Linguagem principal das APIs JAVA 8

Release Description

- Ver em milestone da Release 1.0.0

Scripts Cassandra

CREATE KEYSPACE beststore WITH replication = {'class': 'NetworkTopologyStrategy', 'datacenter1': '3'}  AND durable_writes = true;

CREATE TYPE beststore.atualizacao (
    id uuid,
    titulo text,
    descricao text,
    atualizador text,
    alteracoes map<text, text>,
    instante_atualizacao timestamp
);

CREATE TYPE beststore.caixa (
    id uuid,
    numero int,
    client_key uuid,
    instante_criacao timestamp
);

CREATE TYPE beststore.email (
    id uuid,
    endereco text,
    principal boolean,
    instante_criacao timestamp,
    ultima_atualizacao timestamp
);

CREATE TYPE beststore.endereco (
    id uuid,
    logradouro text,
    pais text,
    estado text,
    cidade text,
    municipio text,
    uf text,
    complemento text,
    numero int,
    cep text,
    instante_criacao timestamp,
    ultima_atualizacao timestamp
);

CREATE TYPE beststore.telefone (
    id uuid,
    numero int,
    ddd int,
    ddi int,
    principal boolean,
    tipo int,
    instante_criacao timestamp,
    ultima_atualizacao timestamp
);

CREATE TABLE beststore.pessoas (
    id_pessoa uuid,
    id_perfil uuid,
    cpf text,
    data_nascimento date,
    emails set<frozen<email>>,
    enderecos set<frozen<endereco>>,
    nome text,
    sexo text,
    tipo_pessoa text,
    ultima_atualizacao timestamp,
    PRIMARY KEY (id_pessoa, id_perfil)
) WITH CLUSTERING ORDER BY (id_perfil ASC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99PERCENTILE';

CREATE TABLE beststore.permissoes (
    id uuid PRIMARY KEY,
    acesso text,
    ativo boolean,
    descricao text
) WITH bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99PERCENTILE';

CREATE TABLE beststore.applications (
    client_id uuid PRIMARY KEY,
    ativo boolean,
    client_secret uuid,
    instante_criacao timestamp
) WITH bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99PERCENTILE';

CREATE TABLE beststore.lojas (
    id uuid PRIMARY KEY,
    caixas set<frozen<caixa>>,
    emails set<frozen<email>>,
    endereco endereco,
    instante_criacao timestamp,
    nome text,
    telefones set<frozen<telefone>>,
    ultima_atualizacao timestamp
) WITH bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99PERCENTILE';

CREATE TABLE beststore.produtos (
    idloja uuid,
    idproduto uuid,
    ativo boolean,
    atualizacoes set<frozen<atualizacao>>,
    categoria uuid,
    data_fabricacao date,
    data_validade date,
    descricao text,
    fabricante uuid,
    imagem blob,
    instante_criacao timestamp,
    nome text,
    quantidade int,
    valor double,
    PRIMARY KEY (idloja, idproduto)
) WITH CLUSTERING ORDER BY (idproduto ASC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99PERCENTILE';

CREATE TABLE beststore.usuarios (
    email text PRIMARY KEY,
    ativo boolean,
    id_loja uuid,
    id_perfil uuid,
    id_pessoa uuid,
    permissoes set<uuid>,
    senha text
) WITH bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99PERCENTILE';

@Author gmsdev04

About

Mantem o source code do BestStore

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages