Contato
Gerador de sites e-commerce com CMS de personalização (alias MyEasyWeb)

Gerador de sites e-commerce com CMS de personalização (alias MyEasyWeb)

Plataforma SaaS multi-tenant gerando sites e-commerce personalizados para 400+ revendedores no mercado europeu de produtos promocionais - 108K linhas de codigo, 7 idiomas, 32 moedas, 1.506 commits em ~3 anos.

2013 - 2016
~3 anos
Senior Software Engineer
Medialeads
PHP 5.3+Symfony 2.4Symfony 3.1Silex 2.0MySQLDoctrine ORMApache SolrElasticSearchMemcachedTwigAmazon SESjQueryBootstrapApacheREST API (FOS)

Linhas de codigo

~108.000

PHP, CSS, JS, Twig em 3 aplicacoes

Sites clientes

400+

Sites de revendedores ativos com dominios proprios

Idiomas

7

FR, EN, ES, DE, IT, NL, PT

Moedas

32

Taxas de cambio BCE, atualizacao automatica

Visao geral do projeto

O que e o MyEasyWeb e por que ele existe

MyEasyWeb e uma plataforma SaaS multi-tenant que gera sites e-commerce white-label para revendedores de produtos promocionais. Desenvolvida pela Medialeads para a European Sourcing, lider europeia em bancos de dados de produtos promocionais, a plataforma permite que cada revendedor (distribuidor) tenha seu proprio site personalizado - com seu logo, cores, dominio e catalogo configurado - alimentado automaticamente pelo banco de dados centralizado da European Sourcing com mais de 520.000 produtos de 800+ fornecedores.

O sistema e composto por tres aplicacoes distintas: o front-end principal e back-office do revendedor (myeasyweb.net, Symfony 2.4), um back-office de administracao interna para a equipe European Sourcing (bo.myeasyweb.pro, Symfony 3.1), e um site vitrine/motor de busca de produtos (myeasyweb.pro, Silex 2.0). Cada site de revendedor e identificado pelo seu dominio, e a aplicacao carrega dinamicamente a configuracao correspondente (tema, idiomas, fornecedores, margens) em cada requisicao.

Funcionalidades do back-office
Dashboard com pedidos recentes, contatos, produtos e estatisticas de newsletter
Personalizacao completa do site: temas, cores, fontes, logos, imagens de cabecalho, CSS customizado
Catalogo de produtos com busca full-text Solr/ElasticSearch e filtragem por fornecedor
Sistema de orcamentos online com valores minimos configuraveis e notificacoes por email (Amazon SES)
Sistema publicitario completo: slideshows, banners, skyscrapers, anuncios por categoria
Paineis de estatisticas: orcamentos, contatos, visualizacoes de produtos, buscas
Páginas corporativas, menus personalizados e módulo de downloads para conteúdo editorial livre
SEO avançado: categorias SEO personalizadas, metadados, sitemap XML e integração Google Analytics
Internacionalização: 7 idiomas (FR, EN, ES, DE, IT, NL, PT) e 32 moedas com taxas ECB automatizadas

Objetivos, contexto e riscos

Visao estrategica e desafios da plataforma

O MyEasyWeb foi construido com um objetivo claro de monetizacao B2B: oferecer a cada revendedor de produtos promocionais na Europa um site pronto conectado ao banco de dados European Sourcing, gerando receita recorrente e fixando os revendedores no ecossistema.

Sites prontos

400+ ativos

Sites profissionais para revendedores sem habilidades tecnicas

Multi-idioma

7 idiomas

FR, EN, ES, DE, IT, NL, PT

Multi-moeda

32 moedas

Taxas de cambio BCE, atualizacao diaria automatica

Catalogo de produtos

520K+ produtos

Banco de dados centralizado de 800+ fornecedores

Contexto

O projeto esta inserido em um ecossistema maior na Medialeads/European Sourcing, que inclui o marketplace European Sourcing, a extranet de revendedores, ferramentas de traducao, pipelines de importacao de dados e outros produtos B2B. A infraestrutura existente ja contava com um banco de dados MySQL centralizado, um motor de busca Apache Solr e um sistema de API interno. O desenvolvimento comecou com SVN antes de migrar para o GitHub em 2016.

Desafios

O MyEasyWeb impacta diretamente o modelo de receita da European Sourcing: cada site de revendedor gera volume de negocios para os fornecedores da plataforma. Alem da receita, a plataforma serve como ferramenta de retencao - ao fornecer um site profissional gratuito, a European Sourcing mantem seus revendedores no ecossistema.

Riscos identificados

Complexidade multi-tenant

400+ sites pilotados a partir de um codigo unico com personalizacao por tenant - um padrao coerente com as praticas SaaS da decada 2008-2014.

Hash de senhas (estado da arte 2012)

Era o estado da arte do ecossistema PHP do inicio dos anos 2010 - reflexo das restricoes tecnicas da epoca. Os padroes modernos (bcrypt, argon2) se generalizaram desde entao.

Concentracao do motor de busca

Instancia Solr unica para a busca de produtos - era o estado da arte na epoca, coerente com as praticas da decada 2008-2014, antes que clusters multi-no e ElasticSearch se tornassem o padrao para alta disponibilidade.

Esquema de banco compartilhado

Acesso entre aplicacoes a um esquema relacional compartilhado - era o estado da arte na epoca, coerente com as arquiteturas pragmaticas da decada 2008-2014, antes da generalizacao de microsservicos e APIs por contexto de negocio.

Fases de implementacao

Quatro anos de desenvolvimento, das fundacoes a maturidade

Fase 1
Fundacoes e arquitetura multi-tenant
2012 - 2013
  • Desenvolvi a aplicacao principal (myeasyweb.net) com Symfony 2.4 no SVN
  • No lado da arquitetura, projetei e implementei a camada multi-tenant: deteccao de dominio, carregamento dinamico de configuracao
  • Para o acesso aos dados, conectei a aplicacao ao banco MySQL European Sourcing existente e ao motor de busca Apache Solr
  • No back-office do revendedor, construi a gestao de conteudo, estatisticas, orcamentos e configuracao de margens
  • Para fechar a fase, implantei os primeiros sites de revendedores com dominios personalizados
Fase 2
Enriquecimento funcional e escala
2014 - 2015
  • Construi o sistema publicitario completo: slideshows, banners, anuncios 4 posicoes, skyscrapers, anuncios por categoria
  • No lado da navegacao, implementei menus personalizados com suporte a links e paginas incorporadas
  • Do lado das estatisticas, desenvolvi paineis detalhados para orcamentos, contatos, produtos e buscas
  • Para medir a audiencia, integrei o rastreamento Google Analytics por site de revendedor
  • Para a comunicacao comercial, adicionei o gerenciamento e o envio de newsletters
  • No SEO, desenvolvi categorias personalizadas, sitemaps XML e gestao de meta-dados
  • No visual, ampliei a plataforma para 3 temas com camada comum compartilhada e fontes web personalizadas
Fase 3
Modernizacao e novo back-office
2016 (T3)
  • Desenvolvi o bo.myeasyweb.pro em Symfony 3.1 - o novo back-office de administracao interna
  • No lado da API, implementei a arquitetura REST (FOSRestBundle + JMSSerializer) para a gestao centralizada de sites
  • Para reconciliar os dados, construi o servico de sincronizacao entre os bancos interno e de revendedores
  • No lado da i18n, adicionei o sistema de gestao de traducoes (TranslatableListener, Locale, CategoryTranslation)
  • Em paralelo, liderei a migracao do controle de versao de SVN para GitHub (organizacao: medialeads)
Fase 4
Site vitrine e busca
2016 (T4)
  • Desenvolvi o site vitrine myeasyweb.pro com o micro-framework Silex 2.0
  • Para a busca, integrei o ElasticSearch com uma biblioteca PHP customizada interna (lib/ElasticSearch/)
  • No lado do front, construi as paginas de busca de produtos com templates Twig (Home, Search, Layout)

Atores e interacoes

Como colaborei em uma equipe de 5 desenvolvedores e 1.506 commits

Construi este projeto dentro da Medialeads, uma empresa de software que desenvolvia produtos para a European Sourcing - lider europeia em bancos de dados de produtos promocionais. Ao lado de uma equipe de 5 desenvolvedores reunida em 3 repositorios, levei ~65% de todos os commits como desenvolvedor lead.

Distribuicao de commits por desenvolvedor

Resultados e entregas

O que foi alcancado em 4+ anos de desenvolvimento

Entidades no banco

67

41 (principal) + 10 (ES) + 10 (BO) + 6 (compartilhado)

Controllers

57

44 (principal) + 13 (BO admin)

Rotas/Endpoints API

136

Somente no myeasyweb.net

Commits totais

1.506

Em 3 repositorios, 5 desenvolvedores

Distribuicao de entidades por banco de dados
Metricas de arquitetura tecnica
Capacidades da plataforma
Para o negocio

O MyEasyWeb permitiu que a European Sourcing retivesse sua rede de 400+ revendedores oferecendo-lhes um site profissional gratuito, personalizado e diretamente conectado ao banco de produtos. Cada site de revendedor gera indiretamente volume de negocios para os fornecedores da plataforma.

Para mim pessoalmente

Como desenvolvedor lead responsavel por quase dois tercos do codigo, este projeto foi para mim uma experiencia profissional marcante:

  • Arquitetura SaaS multi-tenant: projetei e mantive um codigo unico servindo 400+ sites de marca independentes - um padrao que aplico hoje a cada projeto SaaS.
  • Expertise PHP full-stack: do lado do framework, afiei meu dominio do ecossistema Symfony 2.x (Doctrine, Twig, seguranca, traducoes, bundles) sob restricoes de producao reais.
  • Integracao de motores de busca: em catalogos massivos, adquiri experiencia pratica com Apache Solr e depois ElasticSearch para busca full-text de produtos.
  • Dominio e-commerce B2B: adquiri uma compreensao profunda de gestao de catalogos, precificacao/margens, fluxos de orcamentos, sincronizacao de fornecedores e multi-moeda.
  • Arquitetura de banco de dados: no dia a dia, trabalhei com replicacao MySQL master/slave, cache Memcached e bancos compartilhados entre aplicacoes.
  • Lideranca tecnica: coordenei o desenvolvimento em 3 repositorios com 4 outros desenvolvedores em workflow por branches, de SVN a Git. Este projeto mudou minha forma de trabalhar: agora projeto cada nova plataforma como multi-tenant por padrao.

O que veio depois

Evolucao e legado da plataforma

Estado atual

Ao final do meu envolvimento, a plataforma havia atingido uma maturidade operacional e demonstrado a viabilidade de abordagens multi-tenant para mercados de nicho B2B - uma arquitetura durável projetada para atravessar várias geracoes tecnologicas.

Minha perspectiva critica

Como julgo este projeto com o recuo

Pontos fortes
  • Com o recuo, continuo orgulhoso da arquitetura multi-tenant: um codigo unico para 400+ sites com personalizacoes individuais - um produto SaaS real, nao sites isolados.
  • No lado do produto, entreguei um back-office do revendedor muito rico: anuncios, estatisticas, SEO, newsletters, margens, downloads, paginas corporativas - muito alem de um CMS simples.
  • Na infraestrutura, reivindico escolhas de escalabilidade bem pensadas: replicacao MySQL master/slave, Memcached, Solr, Amazon SES.
  • Fico satisfeito por ter pensado multi-idioma e multi-moeda desde a concepcao: 7 idiomas e 32 moedas integrados nativamente no modelo de dados.
Pontos de melhoria
  • Na cobertura de testes, produzi poucos testes automatizados - era o estado da arte na epoca, coerente com as praticas PHP da decada 2008-2014, antes do PHPUnit e da CI se generalizarem em producao.
  • Deixei acumular ~38K linhas de CSS - reflexo das restricoes tecnicas front-end da epoca, antes da generalizacao de design systems e pre-processadores modernos.
  • No deploy, eu me apoiava em scripts shell - era o estado da arte na epoca para equipes pequenas, coerente com as praticas da decada 2008-2014, antes que pipelines CI/CD se tornassem o padrao.
Os ensinamentos duradouros que este projeto me trouxe
  1. O multi-tenant e um multiplicador de valor: vi que um codigo unico servindo 400+ clientes gera ROI muito superior a desenvolvimentos sob medida, desde que a camada de personalizacao esteja bem estruturada.
  2. A divida tecnica cresce com o sucesso: quanto mais clientes e funcionalidades eu adicionava, maior era o risco de divida CSS/testes/seguranca sempre que eu nao media a qualidade continuamente.
  3. A documentacao operacional: levo como aprendizado que um wiki com URLs, comandos e crontabs e tao critico quanto a documentacao arquitetural para a sobrevivencia a longo prazo de um projeto.

Arquitetura e diagramas

Infraestrutura e implantacao
Ambientes de desenvolvimento, homologacao e producao

Trajetória relacionada

Experiência profissional ligada a está realização

Competências aplicadas

Competências técnicas e humanas aplicadas

Galeria de imagens

Capturas e visuais do projeto

Painel de administracao MyEasyWeb com gestao de revendedores, pedidos e visao geral de estatisticas
Back-office interno (bo.myeasyweb.pro) - Painel de administracao de revendedores
Pagina de login e registro de revendedor com opcoes de personalizacao de marca
Portal de autenticacao de revendedor - Login personalizado com dominios dedicados
Painel de personalizacao marca branca com configuracoes de tema, cores, logo e fontes para sites de revendedores
Painel de personalizacao - Controle completo da identidade visual por site de revendedor
Vitrine de catalogo de produtos com filtros de busca, navegacao por categoria e listagens de produtos promocionais
Vitrine do catalogo - Busca de produtos multilinguagem com filtragem por fornecedor
Brochura de marketing da plataforma SaaS e-commerce marca branca MyEasyWeb com destaques de funcionalidades
Brochura comercial - Funcionalidades da plataforma e proposta de valor para revendedores

Voce tem um site builder SaaS para projetar ?

Criei o MyEasyWeb, o site builder SaaS: editor visual drag-and-drop, biblioteca de modelos e hospedagem integrada. Vamos conversar sobre seu contexto.

Entrar em contato