top of page
Search

Copy of bernardoart Artist Profile: Exploring the Artistry of BernardoArt

When I first came across the work of Bernardo Oliver, known professionally as bernardoart, I was struck by the unique blend of creativity and technical skill. His designs are not just visually appealing but also tell a story. This post dives into the artistry behind bernardoart, exploring what makes his work stand out and why it’s a great fit for businesses and brands looking for custom visual design.


Getting to Know bernardoart Artist Profile


Bernardo Oliver is an independent designer with a clear focus on delivering high-quality, specialized visual content. His portfolio covers a wide range of styles and mediums, from screen print and T-shirt designs to technical illustrations and game art. What sets him apart is his ability to adapt his style to meet the specific needs of each client while maintaining a consistent level of quality.


His work is perfect for businesses and brands that want something unique and tailored. Whether you need a bold graphic for a T-shirt or a detailed technical illustration for a product manual, bernardoart has the skills to bring your vision to life.



The Creative Process Behind the Designs


One thing I appreciate about bernardoart is the clear creative process behind each project. It starts with understanding the client’s goals and the message they want to convey. From there, sketches and concepts are developed, often involving multiple revisions to ensure the design fits perfectly.


Bernardo Oliver uses a mix of traditional drawing techniques and digital tools. This combination allows for precision and flexibility. For example, a T-shirt design might start as a hand-drawn sketch, then be refined digitally to ensure it prints well on fabric.


This process is important because it guarantees that the final product is not only visually striking but also practical for its intended use. It’s a balance of art and function that many designers struggle to achieve.




 
 
 

Comments


<!doctype html>

const basePerColor = 45; // design + separation per color

const setup = 60; // base setup

const runFactor = Math.max(1, Math.log10(Math.max(10, run))/0.5); // small discount for huge runs

const price = Math.round((setup + (colors * basePerColor)) * runFactor);

return price;

}

 

estimateBtn.addEventListener('click', (e)=>{

const colors = Math.max(1, parseInt(document.getElementById('colors').value||'1',10));

const run = Math.max(1, parseInt(document.getElementById('run').value||'1',10));

const p = estimate(colors, run);

leadResponse.style.color = 'var(--accent-2)';

leadResponse.textContent = `Estimated starting design & separations: $${p} — this excludes printing. Click Send to request a formal quote.`;

});

 

// basic file size check

filesInput.addEventListener('change', ()=>{

const maxMB = 20;

const files = Array.from(filesInput.files);

const tooLarge = files.find(f => f.size > maxMB * 1024 * 1024);

if (tooLarge) {

leadResponse.style.color = 'salmon';

leadResponse.textContent = `One or more files exceed ${maxMB}MB. Please reduce file size or use a transfer link (WeTransfer/Drive).`;

} else {

leadResponse.textContent = '';

}

});

 

// Demo lead send — replace with real endpoint when you integrate

leadForm.addEventListener('submit', async (e)=>{

e.preventDefault();

leadResponse.style.color = 'var(--muted)';

leadResponse.textContent = 'Preparing files & sending request…';

 

// Collect form data

const fd = new FormData(leadForm);

// Append client-side meta

fd.append('site', location.hostname);

fd.append('submitted_at', new Date().toISOString());

 

// Demo: show the data in console and simulate network send

console.log('Lead form data (demo):');

for (const pair of fd.entries()) console.log(pair[0], pair[1]);

 

// Replace the block below with your real API call, e.g. /api/lead

try {

// Example: await fetch('/api/lead', { method:'POST', body: fd });

await new Promise(r => setTimeout(r, 900));

leadResponse.style.color = 'var(--accent-2)';

leadResponse.textContent = 'Thanks — inquiry sent. I will reply within 1–2 business days.';

leadForm.reset();

} catch(err){

console.error(err);

leadResponse.style.color = 'salmon';

leadResponse.textContent = 'Something went wrong while sending. Try again or email bernard@designsbybernard.com';

}

});

 

// Print spec download (generates a simple checklist PDF-like text file on the fly)

specDownload.addEventListener('click', ()=>{

const text = `Print-Ready Art Checklist\n\n1) Vector files preferred (AI/EPS/SVG).\n2) Separate spot colors on their own layers.\n3) Provide simulated process/halftone info when needed.\n4) Indicate garment color and placement.\n5) Include desired pantone/spot colors if required.\n6) Unflatten files or include layered PSD if complex.\n7) Minimum 300 DPI for raster elements.\n8) Add bleed if printing posters.`;

const blob = new Blob([text], { type: 'text/plain' });

const url = URL.createObjectURL(blob);

const a = document.createElement('a');

a.href = url; a.download = 'print-spec-checklist.txt';

a.click();

URL.revokeObjectURL(url);

});

 

// Small conversion utility: if user lands with ?ref=... track it in localStorage

(function trackRef(){

const params = new URLSearchParams(location.search);

if (params.has('ref')) localStorage.setItem('referrer_code', params.get('ref'));

})();

 

})();

</script>

</body>

</html>

bottom of page