You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A .NET library for generating synthetic Czech personal data — names, emails, and phone numbers — for use in testing, seeding databases, and demo applications.
Repository structure
src/ - modular packages (Novak.Net, Novak.Net.Common, Novak.Net.Names, Novak.Net.Emails, Novak.Net.PhoneNumbers, and placeholders for planned modules)
tests/ - xUnit test projects (split by module)
docs/ - module documentation
Quick start
The simplest entry point is NovakClient (or NovakNetClient compatibility alias), which wires up all implemented generators automatically:
usingNovak.Net;varclient=newNovakClient();varname=client.Names.GenerateFullName();varemail=client.Emails.GenerateEmail();varphone=client.PhoneNumbers.GeneratePhoneNumber();varrc=client.RodneCislo.Generate();varaccount=client.BankAccounts.GenerateBankAccount();Console.WriteLine(account);// e.g. 2253325080/6700Console.WriteLine(account.ToIban());// e.g. CZ4767000000002253325080
Runnable sample
A console sample is available in samples/Novak.Net.Sample/.
dotnet run --project ./samples/Novak.Net.Sample/Novak.Net.Sample.csproj -- 42
Names
usingNovak.Net.Names;usingNovak.Net.Names.Models;usingNovak.Net.Names.Options;vargenerator=newNameGenerator(newDataSource());// Single namevarfull=generator.GenerateFullName(newNameGeneratorOptions{Gender=Gender.Female});// Deterministic sequencevarnames=generator.GenerateMany(()=>newNameGeneratorOptions{Gender=Gender.Male,Seed=42},count:10);
NameGeneratorOptions
Property
Type
Default
Description
Gender
Gender
Any
Male, Female, or Any
Seed
int?
null
Fixed seed for deterministic output
WithDiacritics
bool
true
Preserve Czech diacritics
Casing
Casing
Original
Original, Upper, Lower, Title
MinLength / MaxLength
int?
null
Character length bounds
StartsWith
char?
null
Filter by starting letter
Include / Exclude
IReadOnlyCollection<string>?
null
Allow- / deny-list of specific names
FrequencyBucket
string?
null
"Common", "Normal", or "Rare"
Region
string?
null
Region filter (e.g. "CZ")
Emails
usingNovak.Net.Emails;usingNovak.Net.Emails.Data;usingNovak.Net.Emails.Options;vargenerator=newEmailGenerator(newEmbeddedEmailDataRepository());varemail=generator.GenerateEmail(newEmailGeneratorOptions{Seed=42});Console.WriteLine(email);// e.g. xk3ab9fz@example.cz
EmailGeneratorOptions
Property
Type
Default
Description
Seed
int?
null
Fixed seed for deterministic output
Region
string?
null
Region used to select domains
Lowercase
bool
true
Force lowercase output
AllowedDomains
IReadOnlyList<string>?
null
Override the domain pool
MaxLocalPartLength
int?
null
Cap the local-part length
Phone numbers
usingNovak.Net.PhoneNumbers;usingNovak.Net.PhoneNumbers.Data;usingNovak.Net.PhoneNumbers.Options;vargenerator=newPhoneNumberGenerator(newEmbeddedPhoneNumberDataRepository());varphone=generator.GeneratePhoneNumber(newPhoneNumberGeneratorOptions{Format=PhoneNumberFormat.Spaced,Seed=42});Console.WriteLine(phone);// e.g. +420 603 123 456
PhoneNumberGeneratorOptions
Property
Type
Default
Description
Seed
int?
null
Fixed seed for deterministic output
Region
string?
null
Region used to select country code and prefixes
Format
PhoneNumberFormat
E164
E164, Plain, or Spaced
MobileOnly
bool
true
Restrict to mobile prefixes
CountryCode
string?
null
Override country code (e.g. "420")
Rodné číslo
usingNovak.Net.RodneCislo;usingNovak.Net.RodneCislo.Models;usingNovak.Net.RodneCislo.Options;vargenerator=newRodneCisloGenerator();varrc=generator.Generate(newRodneCisloGeneratorOptions{Seed=42,Gender=Gender.Female,});Console.WriteLine(rc);// e.g. 845204/5228Console.WriteLine(rc.Digits);// without slash: 8452045228// Validate any stringboolok=RodneCisloGenerator.Validate("845204/5228");
RodneCisloGeneratorOptions
Property
Type
Default
Description
Seed
int?
null
Fixed seed for deterministic output
Gender
Gender
Any
Male, Female, or Any
MinYear
int?
1940
Minimum birth year (inclusive)
MaxYear
int?
2005
Maximum birth year (inclusive)
Format
RodneCisloFormat
WithSlash
WithSlash or WithoutSlash
Bank accounts
usingNovak.Net.BankAccounts;usingNovak.Net.BankAccounts.Data;usingNovak.Net.BankAccounts.Options;vargenerator=newBankAccountGenerator(newEmbeddedBankAccountDataRepository());varaccount=generator.GenerateBankAccount(newBankAccountGeneratorOptions{Seed=42,WithPrefix=false,});Console.WriteLine(account);// e.g. 2253325080/6700Console.WriteLine(account.ToIban());// e.g. CZ4767000000002253325080// Validate any stringboolok=BankAccountGenerator.Validate("19-2000145399/0800");
BankAccountGeneratorOptions
Property
Type
Default
Description
Seed
int?
null
Fixed seed for deterministic output
BankCode
string?
null
Override bank code (e.g. "0800"). Random when null.
WithPrefix
bool?
null
true = always prefix; false = no prefix; null = random
Install
Until published on NuGet, reference the facade project directly: