Skip to content
This repository was archived by the owner on Jan 5, 2026. It is now read-only.

Rutpiv/cpf-rg-validator

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 CPF/RG Validator - Brazilian Document Validation

Tokyo Night Theme Preview
Tokyo Night Theme (Dark & Light Modes)

Spring Boot Version Java Version Tests Passed License

🗂️ Table of Contents


⭐ Features

Industrial-grade Brazilian document validation:

  • Dual Validation Modes
    • Single Mode: Real-time validation with instant feedback
    • Batch Mode: Process multiple documents (one per line)
  • 🔍 Two-Step Validation
    • Finite Automaton: Format verification via DFA (5 RG patterns • 5 CPF patterns)
    • Check Digit: Mathematical validation using modulo 11
  • 🎨 Modern Interface
    • Responsive design with Tailwind CSS
    • Smooth dark/light mode transitions

🔢 Accepted Formats

Valid RG Patterns
11111111111.111.111-111111.111-111.11111-111111111-1

Valid CPF Patterns
11111111111111.111.111-11111111.111-11111.111111-11111111111-11


📸 Screenshots

Automaton Diagram

Automaton Diagram
Finite State Machine with Transition Rules 📥 Download JFLAP Project File

📊 Complete Transition Table (Enum-based States)
State 0-9 x . -
→ Q0 Q1
Q1 Q2
Q2 Q3 Q12
Q3 Q4 Q22
Q4 Q5
Q5 Q6 Q20
Q6 Q7 Q29
Q7 Q8
Q8 Q9 Q19 Q21
Q9 * Q10 Q30
Q10 Q11
Q11 *
Q12 Q13
Q13 Q14
Q14 Q15
Q15 Q16 Q20
Q16 Q17
Q17 Q18
Q18 Q19 Q19 Q21
Q19 *
Q20 Q16
Q21 Q19 Q19
Q22 Q23
Q23 Q24
Q24 Q25
Q25 Q26 Q29
Q26 Q27
Q27 Q28
Q28 Q10 Q30
Q29 Q26
Q30 Q10

(Implemented using Java Enums and HashMaps)

Single Validation Mode

Single Validation
Single-document Text Input Validation

Batch Processing Mode

Batch Validation
Multi-document Text Input Validation


🏗️ Technical Implementation

Core Architecture

src/
├── main
│   ├── java/br/edu/fesa/validator
│   │   ├── ValidatorApplication.java       # Main class
│   │   ├── controller/DocumentController.java # REST endpoints
│   │   ├── model/DocumentResultModel.java  # Validation result DTO
│   │   ├── service/DocumentService.java    # Business logic
│   │   └── utils
│   │       ├── AFDValidator.java           # State machine implementation
│   │       └── CheckDigitValidator.java    # Digit calculation
│   └── resources
│       ├── templates/index.html            # Thymeleaf template
│       └── static/css/styles.css           # Tailwind styles
└── test
    └── java/br/edu/fesa/validator
        ├── service/DocumentServiceTest.java    # 13 Tests
        └── utils
            ├── AFDValidatorTest.java          # 13 Tests
            └── CheckDigitValidatorTest.java   # 12 Tests

⚙️ Technologies

  • Backend: Spring Boot 3.4.2 + Java 17
  • Frontend: Thymeleaf + Tailwind CSS
  • State Machine: Enum-based DFA with HashMap transitions
  • Build: Maven 3.9+
  • Testing: JUnit 5 + Mockito (38 Total Tests)

🚀 Getting Started

Prerequisites

  • JDK 17
  • Maven 3.9+

Installation

git clone git@github.com:Rutpiv/cpf-rg-validator.git
cd cpf-rg-validator
mvn clean install

Running the Application

mvn spring-boot:run

Access: 🌐 http://localhost:8080


🧪 Testing

Comprehensive validation coverage:

mvn test
  • ✅ 13 Service Tests (Business logic)
  • ✅ 13 Automaton Tests (State transitions)
  • ✅ 12 Check Digit Tests (Mathematical validation)

📜 License

Distributed under BSD 3-Clause License.
➡️ View Full License Text


👥 Authors

Students from Engenheiro Salvador Arena College:
➡️ Complete Contributors List


Built with ♥ by Computer Engineering students
Compilers Course Project • 2025 Semester

About

CPF and RG validator system.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 78.9%
  • HTML 16.3%
  • CSS 4.8%