Skin type oily Age 21 yrs Currently use dove soap for face Before that used the joy charcoal face wash but no moisturizer and sunscreen and after some months had a white mark near nose region,hence switched to dove soap Make a skin care routine for me
skincare routine oily skin 21 year old male India affordable products 2024
| Step | Morning | Night |
|---|---|---|
| Cleanser | Salicylic acid wash | Gentle cleanser |
| Treatment | - | Spot treatment (pimples only) |
| Moisturizer | Gel moisturizer | Gel moisturizer |
| Sunscreen | SPF 50 matte | - |
| Product | Approx. Cost |
|---|---|
| Salicylic acid face wash | ₹200 |
| Gentle night cleanser | ₹350 |
| Gel moisturizer | ₹350 |
| SPF 50 matte sunscreen | ₹400 |
| Weekly peel (optional) | ₹600 |
| Total | ~₹1,300-1,900 |
Note: If the red bump near your nose doesn't improve in 2 weeks with spot treatment, visit a dermatologist. It's in the "danger triangle" area of the face where infections can be more serious if left untreated. A dermatologist can also prescribe topical retinoids (like Adapalene/Differin) which are the gold standard for clearing closed comedones and preventing acne long-term.
Morning Cleanse If your face feels oily: Derma Co 2% Sali-Cinamide Face Wash (pea-sized amount). If it doesn't feel oily: rinse with plain water. Moisturize Derma Co 5% Nia-Ceramide Mattifying Moisturizer Use about 1 fingertip unit for your face. Sunscreen (if exposed to daylight) Derma Co 1% Hyaluronic Sunscreen SPF 50 Use the 2-finger rule for face and neck. Reapply if you're outdoors for more than 2–3 hours. 🌙 Night Derma Co 2% Sali-Cinamide Face Wash Pea-sized amount. Massage gently for 20–30 seconds. Derma Co 5% Nia-Ceramide Mattifying Moisturizer About 1 fingertip unit.
| Point | Suggestion |
|---|---|
| Face wash at night | Massage for 60 seconds, not 20-30. Salicylic acid needs contact time to work properly on clogged pores. |
| Moisturizer order at night | If you add the spot treatment - apply it BEFORE moisturizer, let it dry 2 min, then moisturize. |
| Sunscreen reapplication | Indoors near windows still warrants SPF. UV-A passes through glass and causes the kind of pigmentation you've already experienced. |
Create a detailed skincare routine PDF with product names, quantities, and timing I can print
mkdir -p /tmp/workspace/skincare-pdf && ls /tmp/workspace/skincare-pdf/
~/skincare-pdf/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT
from reportlab.platypus import Image as RLImage
OUTPUT = "/tmp/workspace/skincare-pdf/Skincare_Routine.pdf"
# ── Colour palette ──────────────────────────────────────────────────────────
NAVY = colors.HexColor("#1A2B4A") # headings / header bg
SKY = colors.HexColor("#E8F4FD") # morning block bg
MOON = colors.HexColor("#F0EBF8") # night block bg
GOLD = colors.HexColor("#F5A623") # accent / step numbers
LIGHT_GREY= colors.HexColor("#F7F7F7") # table row alt
MID_GREY = colors.HexColor("#CCCCCC") # rule / border
WHITE = colors.white
GREEN = colors.HexColor("#27AE60")
RED_SOFT = colors.HexColor("#E74C3C")
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=18*mm, rightMargin=18*mm,
topMargin=14*mm, bottomMargin=14*mm,
title="Daily Skincare Routine",
author="Orris Skincare"
)
W, H = A4
content_w = W - 36*mm
styles = getSampleStyleSheet()
# Custom styles
def PS(name, **kw):
return ParagraphStyle(name, **kw)
TITLE_S = PS("Title2", fontSize=22, fontName="Helvetica-Bold",
textColor=WHITE, alignment=TA_CENTER, spaceAfter=2)
SUBTITLE_S= PS("Subtitle2", fontSize=10, fontName="Helvetica",
textColor=colors.HexColor("#BCD9F5"), alignment=TA_CENTER)
SECTION_S = PS("Section", fontSize=13, fontName="Helvetica-Bold",
textColor=WHITE, alignment=TA_CENTER, spaceAfter=0)
LABEL_S = PS("Label", fontSize=9, fontName="Helvetica-Bold",
textColor=NAVY, spaceAfter=1)
BODY_S = PS("Body2", fontSize=9, fontName="Helvetica",
textColor=colors.HexColor("#333333"), leading=13)
SMALL_S = PS("Small", fontSize=8, fontName="Helvetica",
textColor=colors.HexColor("#555555"), leading=11)
TIP_S = PS("Tip", fontSize=8, fontName="Helvetica-Oblique",
textColor=colors.HexColor("#555555"), leading=11)
STEP_S = PS("Step", fontSize=10, fontName="Helvetica-Bold",
textColor=NAVY)
WARN_S = PS("Warn", fontSize=8, fontName="Helvetica-Bold",
textColor=RED_SOFT)
TIMELINE_S= PS("Timeline", fontSize=8, fontName="Helvetica",
textColor=colors.HexColor("#333333"), leading=12)
story = []
# ── HEADER BANNER ───────────────────────────────────────────────────────────
header_data = [[
Paragraph("MY DAILY SKINCARE ROUTINE", TITLE_S),
]]
header_sub = [[
Paragraph("Oily / Acne-Prone Skin • Age 21 • Derma Co Products", SUBTITLE_S),
]]
banner = Table(
[
[Paragraph("MY DAILY SKINCARE ROUTINE", TITLE_S)],
[Paragraph("Oily / Acne-Prone Skin • Age 21 • Derma Co Products", SUBTITLE_S)],
],
colWidths=[content_w]
)
banner.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), NAVY),
("TOPPADDING", (0,0), (-1,-1), 10),
("BOTTOMPADDING", (0,0), (-1,-1), 10),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("ROUNDEDCORNERS",(0,0), (-1,-1), [6,6,6,6]), # ignored but harmless
]))
story.append(banner)
story.append(Spacer(1, 5*mm))
# ── helper: section header ──────────────────────────────────────────────────
def section_header(text, bg):
tbl = Table([[Paragraph(text, SECTION_S)]], colWidths=[content_w])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
]))
return tbl
# ── helper: step row ────────────────────────────────────────────────────────
def step_row(num, step_name, product, qty, notes, bg=WHITE):
num_cell = Paragraph(f'<font color="#F5A623"><b>{num}</b></font>', PS("N", fontSize=16, fontName="Helvetica-Bold", alignment=TA_CENTER))
name_cell = Paragraph(f"<b>{step_name}</b>", PS("SN", fontSize=10, fontName="Helvetica-Bold", textColor=NAVY))
prod_cell = Paragraph(product, PS("SP", fontSize=9, fontName="Helvetica-Oblique", textColor=colors.HexColor("#1A6B3A")))
qty_cell = Paragraph(qty, PS("SQ", fontSize=9, fontName="Helvetica-Bold", textColor=RED_SOFT))
note_cell = Paragraph(notes, SMALL_S)
inner = Table(
[
[name_cell, qty_cell],
[prod_cell, ""],
[note_cell, ""],
],
colWidths=[content_w - 24*mm - 4*mm, 24*mm],
rowHeights=None
)
inner.setStyle(TableStyle([
("SPAN", (0,2), (1,2)),
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING", (0,0), (-1,-1), 0),
("TOPPADDING", (0,0), (-1,-1), 1),
("BOTTOMPADDING",(0,0), (-1,-1), 1),
("ALIGN", (1,0), (1,0), "RIGHT"),
]))
row = Table(
[[num_cell, inner]],
colWidths=[12*mm, content_w - 12*mm]
)
row.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING",(0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("LINEBELOW", (0,0), (-1,-1), 0.4, MID_GREY),
]))
return row
# ════════════════════════════════════════════════════════════════════════════
# MORNING SECTION
# ════════════════════════════════════════════════════════════════════════════
story.append(section_header("☀ MORNING ROUTINE", colors.HexColor("#2471A3")))
story.append(Spacer(1, 2*mm))
morning_steps = [
(
"1", "CLEANSE",
"Derma Co 2% Sali-Cinamide Face Wash",
"Pea-sized amount",
"Use ONLY if face feels oily. Otherwise rinse with plain water.\n"
"Massage gently for 60 sec, rinse with cool/lukewarm water.",
SKY
),
(
"2", "MOISTURIZE",
"Derma Co 5% Nia-Ceramide Mattifying Moisturizer",
"1 fingertip unit",
"Apply while face is still slightly damp for better absorption.\n"
"Blend outward — don't forget jawline and neck.",
WHITE
),
(
"3", "SUNSCREEN",
"Derma Co 1% Hyaluronic Sunscreen SPF 50",
"2-finger rule (face + neck)",
"Apply 15 min before sun exposure. Reapply every 2-3 hrs if outdoors.\n"
"Even indoors near windows — UV-A passes through glass.",
SKY
),
]
for s in morning_steps:
story.append(step_row(*s))
story.append(Spacer(1, 1*mm))
story.append(Spacer(1, 4*mm))
# ════════════════════════════════════════════════════════════════════════════
# NIGHT SECTION
# ════════════════════════════════════════════════════════════════════════════
story.append(section_header("🌙 NIGHT ROUTINE", NAVY))
story.append(Spacer(1, 2*mm))
night_steps = [
(
"1", "CLEANSE",
"Derma Co 2% Sali-Cinamide Face Wash",
"Pea-sized amount",
"Use every night — removes sweat, sunscreen, and daily buildup.\n"
"Massage for 60 seconds. Rinse thoroughly.",
MOON
),
(
"2", "SPOT TREATMENT (if needed)",
"Benzoyl Peroxide 2.5% Gel (Oxy / Persol 2.5 — ~₹80)",
"Tiny dot — active pimples only",
"Apply ONLY on active red pimples (especially the nostril area).\n"
"Do NOT spread on whole face. Let dry 2 min before moisturizer.",
WHITE
),
(
"3", "MOISTURIZE",
"Derma Co 5% Nia-Ceramide Mattifying Moisturizer",
"1 fingertip unit",
"Niacinamide at night works to fade acne marks while you sleep.\n"
"Apply as final step.",
MOON
),
]
for s in night_steps:
story.append(step_row(*s))
story.append(Spacer(1, 1*mm))
story.append(Spacer(1, 4*mm))
# ════════════════════════════════════════════════════════════════════════════
# WEEKLY (1-2x)
# ════════════════════════════════════════════════════════════════════════════
story.append(section_header("📅 WEEKLY (1–2× per week, Night Only)", colors.HexColor("#7D3C98")))
story.append(Spacer(1, 2*mm))
story.append(step_row(
"W", "CHEMICAL EXFOLIANT",
"Minimalist AHA 25% + BHA 5% Peeling Solution (~₹599)",
"Thin even layer",
"Apply to dry face. Leave on 10 min MAX. Rinse off with water.\n"
"Helps clear forehead bumps (closed comedones). Do NOT use on open/active pimples.\n"
"Always apply sunscreen the next morning after using this.",
colors.HexColor("#F5EEF8")
))
story.append(Spacer(1, 5*mm))
# ════════════════════════════════════════════════════════════════════════════
# GOLDEN RULES
# ════════════════════════════════════════════════════════════════════════════
rules_header = Table(
[[Paragraph(" ✔ GOLDEN RULES", PS("GR", fontSize=11, fontName="Helvetica-Bold",
textColor=WHITE, spaceAfter=0))]],
colWidths=[content_w]
)
rules_header.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#1E8449")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING",(0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
story.append(rules_header)
rules = [
("Never skip moisturizer", "Oily skin still needs hydration. Skipping causes MORE oil production."),
("Never skip sunscreen", "This caused your previous white marks. SPF every day, no exceptions."),
("Max 2x cleanse daily", "Over-washing strips the skin barrier and worsens oiliness."),
("60-second rule", "Salicylic acid needs contact time. Massage for a full minute."),
("Don't pick the nose bump", "Nostril crease area scars and gets infected easily. Use spot treatment only."),
("One product at a time", "Wait 1 week before introducing any new product to your routine."),
("Patch test first", "Test all new products on inner arm for 24 hrs before applying to face."),
]
for i, (rule, detail) in enumerate(rules):
bg = LIGHT_GREY if i % 2 == 0 else WHITE
row = Table(
[[
Paragraph(f"<b>{rule}</b>", PS("RL", fontSize=9, fontName="Helvetica-Bold", textColor=NAVY)),
Paragraph(detail, SMALL_S)
]],
colWidths=[50*mm, content_w - 50*mm]
)
row.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING",(0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("VALIGN", (0,0), (-1,-1), "TOP"),
("LINEBELOW", (0,0), (-1,-1), 0.3, MID_GREY),
]))
story.append(row)
story.append(Spacer(1, 5*mm))
# ════════════════════════════════════════════════════════════════════════════
# RESULTS TIMELINE
# ════════════════════════════════════════════════════════════════════════════
timeline_header = Table(
[[Paragraph(" ⏱ WHAT TO EXPECT", PS("TH", fontSize=11, fontName="Helvetica-Bold",
textColor=WHITE, spaceAfter=0))]],
colWidths=[content_w]
)
timeline_header.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#1A2B4A")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING",(0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
story.append(timeline_header)
timeline = [
("Week 1–2", "Less shine, skin feels more balanced and less greasy by midday."),
("Week 3–4", "Forehead bumps (closed comedones) start visibly reducing."),
("Month 2–3", "Acne marks and white patch near nose gradually even out (niacinamide + SPF)."),
("Month 3+", "If forehead bumps persist, add Adapalene (Differin) at night — consult a dermatologist."),
]
for i, (period, result) in enumerate(timeline):
bg = colors.HexColor("#EAF2FF") if i % 2 == 0 else WHITE
row = Table(
[[
Paragraph(f"<b>{period}</b>", PS("TP", fontSize=9, fontName="Helvetica-Bold",
textColor=colors.HexColor("#2471A3"))),
Paragraph(result, SMALL_S)
]],
colWidths=[28*mm, content_w - 28*mm]
)
row.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING",(0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("LINEBELOW", (0,0), (-1,-1), 0.3, MID_GREY),
]))
story.append(row)
story.append(Spacer(1, 5*mm))
# ════════════════════════════════════════════════════════════════════════════
# PRODUCT QUICK REFERENCE TABLE
# ════════════════════════════════════════════════════════════════════════════
story.append(section_header("🛒 PRODUCT QUICK REFERENCE", colors.HexColor("#C0392B")))
story.append(Spacer(1, 2*mm))
col_w = [content_w * p for p in [0.38, 0.20, 0.17, 0.25]]
header_row = [
Paragraph("<b>Product</b>", PS("PH", fontSize=8, fontName="Helvetica-Bold", textColor=WHITE)),
Paragraph("<b>When</b>", PS("PH", fontSize=8, fontName="Helvetica-Bold", textColor=WHITE)),
Paragraph("<b>Amount</b>", PS("PH", fontSize=8, fontName="Helvetica-Bold", textColor=WHITE)),
Paragraph("<b>Est. Cost</b>", PS("PH", fontSize=8, fontName="Helvetica-Bold", textColor=WHITE)),
]
prod_rows = [
["Derma Co 2% Sali-Cinamide Face Wash", "AM (if oily) + PM", "Pea-sized", "~₹199"],
["Derma Co 5% Nia-Ceramide Moisturizer", "AM + PM", "1 fingertip unit", "~₹349"],
["Derma Co SPF 50 Hyaluronic Sunscreen", "AM only", "2-finger rule", "~₹399"],
["Benzoyl Peroxide 2.5% (Oxy/Persol 2.5)", "PM — spot only", "Tiny dot", "~₹80"],
["Minimalist AHA+BHA Peel (weekly, optional)", "PM — 1-2x/week", "Thin layer, 10 min", "~₹599"],
]
table_data = [header_row]
for pr in prod_rows:
table_data.append([Paragraph(pr[i], PS(f"PC{i}", fontSize=8, fontName="Helvetica",
textColor=colors.HexColor("#222222"))) for i in range(4)])
prod_table = Table(table_data, colWidths=col_w)
prod_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#C0392B")),
("ROWBACKGROUNDS",(0,1), (-1,-1), [LIGHT_GREY, WHITE]),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
("GRID", (0,0), (-1,-1), 0.4, MID_GREY),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(prod_table)
story.append(Spacer(1, 4*mm))
# ════════════════════════════════════════════════════════════════════════════
# FOOTER
# ════════════════════════════════════════════════════════════════════════════
footer = Table(
[[Paragraph(
"⚠ If the nostril bump doesn't improve in 2 weeks, consult a dermatologist. "
"Persistent acne responds best to prescription Adapalene or Clindamycin gel. "
"Generated by Orris · July 2026",
PS("FT", fontSize=7.5, fontName="Helvetica-Oblique",
textColor=colors.HexColor("#666666"), alignment=TA_CENTER)
)]],
colWidths=[content_w]
)
footer.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#F0F0F0")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING",(0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
]))
story.append(footer)
# ── Build ────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF created: {OUTPUT}")
python /tmp/workspace/skincare-pdf/generate_pdf.py
ls -lh /tmp/workspace/skincare-pdf/Skincare_Routine.pdf
Skincare Routine
PDF Document · PDF
Which is the better option your given skincare routine or my dermaco skin care routine
| Factor | My General Routine | Your Derma Co Routine |
|---|---|---|
| Products | Mixed brands (Minimalist, Neutrogena, etc.) | Single brand, 3 focused products |
| Simplicity | 4-5 products to source | 3 products, easy to buy together |
| Ingredient synergy | Good individually | Designed to work together |
| Face wash | Generic salicylic acid wash | Sali-Cinamide (SA + Niacinamide combo) |
| Moisturizer | Generic gel moisturizer | Nia-Ceramide (Niacinamide + Ceramides - addresses your exact concerns) |
| Sunscreen | Matte SPF 50 | Hyaluronic SPF 50 (hydrating + protective) |
| Cost | ~₹1,300-1,900 | ~₹950-1,100 for all 3 |
| Addresses your white marks | Partially | Directly - Niacinamide at 5% specifically fades hyperpigmentation |
| Addresses oiliness | Yes | Yes - mattifying moisturizer specifically |
| Spot treatment | Included | Not included (needs to be added) |
Suggest abest 2.5 % benzoyl peroxide cream
best 2.5% benzoyl peroxide cream gel India available 2024 acne spot treatment
| When | How |
|---|---|
| Night only | Apply AFTER Sali-Cinamide face wash, BEFORE Nia-Ceramide moisturizer |
| Amount | Tiny dot - the size of a match head, directly on the pimple only |
| Contact time | Leave on overnight, don't rinse |
| Frequency | Only when you have an active pimple - not daily on whole face |
Which is better moisturizer for me nia-ceramide mattifying moisturizer or 4% ceramide barrier repair moisturizer ,both of dermaco
Derma Co 5% Nia-Ceramide Mattifying Moisturizer vs 4% Ceramide Barrier Repair Moisturizer ingredients oily skin
Derma Co 4% Ceramide Barrier Repair Moisturizer ingredients texture for oily skin
| Factor | 5% Nia-Ceramide Mattifying | 4% Ceramide Barrier Repair |
|---|---|---|
| Ceramide content | 2% (Ceramide NP) | 4% (5 ceramide types: 1, 2, 3, 4, AP) |
| Niacinamide | 5% | Present (lower concentration) |
| Zinc PCA | ✅ Yes | ❌ No |
| Texture | Lightweight gel | Cream/lotion texture |
| Oil control | Mattifying - specifically designed for it | Not focused on oil control |
| Shea butter / fatty acids | No heavy emollients | Contains Shea Butter Glycerides, Stearic Acid, Dimethicone |
| Designed for | Oily / combination skin | All skin types (dry, sensitive focus) |
| Price | ~₹349 (100g) | ~₹399 (50g) - costlier per gram |
| Key extra ingredient | Zinc PCA (sebum regulator) | Oxylance (oxygenation - anti-aging focus) |