ABACUS4YOU
◆ INDIA'S FASTEST MATH PLATFORM

Train Your Mind. Master Numbers.

The complete abacus & mental arithmetic training platform. Real competitions, live leaderboards, and progress tracking.

2,847
Students
143
Today's Competitions
1.2M+
Questions Solved
0.4s
Best Flash Speed
All Operations
Click any operation to start practicing immediately
Why Abacus4You?
Built for real mental math champions

Flash Anzan Training

Numbers flash at configurable speeds from 3s down to 0.1s — pure mental visualization training.

SPEED TRAINING
🏆

Live Competitions

Real-time leaderboards. Compete with students across India. Daily challenges reset at midnight.

COMPETE LIVE
📊

Smart Analytics

Track accuracy trends, speed improvement, session history, and competition rankings over time.

INSIGHTS
Practice Arena
Choose an operation and configure your session

⚙ SESSION SETTINGS

1/10
Question
30
0
Score
0
Correct
0
Wrong
ADDITION — QUESTION 1
12 + 34 = ?
🎉
0%
Keep going!
0
Correct
0
Wrong
0s
Total Time
0s
Avg / Question

Daily Competition

Real-time leaderboard — auto-refreshing every 8 seconds

LIVE
👥
24
Participants Today
1.2s
Avg Flash Speed
🎯
98%
Top Accuracy
#
Student
Score
Time
Accuracy

🔗 Google Sheets — Apps Script Integration

Results auto-sync to Google Sheets via Apps Script webhook. Every submission POSTs: name, class, score, time, accuracy, type, timestamp.

// Code.gs — Deploy as Web App (Execute as: Me, Access: Anyone)
const SHEET_ID = 'YOUR_SHEET_ID_HERE';

function doPost(e) {
  const data = JSON.parse(e.postData.contents);
  const sheet = SpreadsheetApp.openById(SHEET_ID)
                  .getSheetByName('Competition');
  sheet.appendRow([
    new Date(), data.name, data.class, data.score,
    data.time, data.accuracy, data.type, data.questions
  ]);
  sheet.getDataRange().sort({column: 4, ascending: false});
  return ContentService
    .createTextOutput(JSON.stringify({status:'ok',ts:Date.now()}))
    .setMimeType(ContentService.MimeType.JSON);
}

function doGet() {
  const sheet = SpreadsheetApp.openById(SHEET_ID)
                  .getSheetByName('Competition');
  const rows = sheet.getDataRange().getValues().slice(1).map(r=>({
    name:r[1], class:r[2], score:r[3],
    time:r[4], accuracy:r[5], type:r[6]
  }));
  return ContentService
    .createTextOutput(JSON.stringify(rows))
    .setMimeType(ContentService.MimeType.JSON);
}

Courses

Structured curriculum from beginner to competition champion

Virtual Abacus

Click beads to toggle • Upper bead = 5 • Lower beads = 1 each

0

📖 How to Use

Each column = place value (ones → millions). Click upper bead for 5; lower beads for 1 each. Value updates automatically.

Welcome back, Student 👋
Your training overview — keep pushing!

Total Score

1,240
↑ +80 this week

Questions Solved

486
↑ +24 today

Accuracy

87%
↑ +3% this week

Competitions

12
↑ 3 this week

Best Rank

#3
↑ Up from #7

Avg Speed

1.8s
↓ Getting faster

Recent Activity

    Quick Practice

    Admin Dashboard

    Manage users, competitions, data, and platform settings

    👥
    247
    Total Users
    24
    Active Today
    🏆
    6
    Competitions
    📊
    1,486
    Questions Today
    NameClassCompetitionsBest ScoreAccuracyStatusActions

    Today's Competitions

    TypeQuestionsTimeParticipantsStatusActions

    Today's Leaderboard

    #
    Student
    Score
    Time
    Accuracy

    🔗 Google Sheets Connection

    🎨 Branding Customization

    🤖 Full Apps Script Automation Suite

    Deploy these scripts to automate daily resets, email digests, leaderboard management, and push notifications.

    // ── TRIGGER SETUP ──
    function setupTriggers() {
      ScriptApp.newTrigger('resetDaily')
        .timeBased().everyDays(1).atHour(0).create();
      ScriptApp.newTrigger('sendDigest')
        .timeBased().everyDays(1).atHour(20).create();
    }
    
    // ── DAILY RESET ──
    function resetDaily() {
      const ss = SpreadsheetApp.openById(SHEET_ID);
      const s = ss.getSheetByName('Competition');
      if (s.getLastRow() > 1)
        s.deleteRows(2, s.getLastRow() - 1);
      ss.getSheetByName('Log').appendRow([new Date(), 'Daily reset done']);
    }
    
    // ── EMAIL DIGEST ──
    function sendDigest() {
      const data = SpreadsheetApp.openById(SHEET_ID)
        .getSheetByName('Competition')
        .getDataRange().getValues().slice(1, 4);
      let html = '<h2>Today Top Performers</h2>';
      data.forEach((r, i) => {
        html += `<p>#${i+1}: <b>${r[1]}</b> Score: ${r[3]}</p>`;
      });
      GmailApp.sendEmail(ADMIN_EMAIL, 'Daily Results', '', {htmlBody: html});
    }
    Done