crowdfund_alec 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +110 -8
  3. metadata +111 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 783050b5dd00a24b8a28767bf31cbe5086eb291d48e7490ffb493a6df854f104
4
- data.tar.gz: 32b0582569a592921d126cfa63664ecb98bf9c966e1c73f3c10fac79dfc746e2
3
+ metadata.gz: 3ff6ee103e9ea86c90bb6243cd1f79c0e287f74cb2ed3df8029a312e278b0702
4
+ data.tar.gz: 86726a07c2c5eadbddea6d79e03217e2b4742f8c5d9a0897c1c1785e1e495edc
5
5
  SHA512:
6
- metadata.gz: f4c23651ebd47c69f1e9b4c4fff45d855769e956d6a55fe35265d867b68bc7a276305ed32080f84f1ebea84bc1bb85421e7390fcc66cfe051d6d24cc9673b92f
7
- data.tar.gz: e09774c699c324d4f94e0437f913aa8e6ef77d62aa8b53b6dac67b31da6189ac261ef8a42a5c5c9f9f3241bc1f92fab444018913652a7344a1dd4582fe98685a
6
+ metadata.gz: 3ca4b8f69821a8a511650b9ae6bdb6e7ce8fd618c5126d6a70f91678c889915a1f7533ef15bb3b65019736ea6a6737c0c500a674ba349251d7d22049e95f1028
7
+ data.tar.gz: 5b91c2dac9214f2fa51b7054ca0fff5dc376e6a1d6727bcff58ec1f35a9c4579de01aa203f59e2c44e6d1a49e6ef9d271790080698b288eeab2cf4a20534af3c
data/README.md CHANGED
@@ -1,12 +1,114 @@
1
- # Flicks
1
+ # Crowdfund (Alec)
2
2
 
3
- Command-line app/gem to fundfraising program.
3
+ Ferramenta de linha de comando e biblioteca Ruby para simular um programa de **arrecadação de fundos** com rodadas, promessas (pledges) e diferentes tipos de projetos (básico, com *matching*, e *grant*).
4
4
 
5
- ## Run from source
5
+ ## Instalação
6
+
7
+ ```bash
8
+ gem install crowdfund_alec
9
+ ```
10
+
11
+ Ou rode a partir do código-fonte:
12
+
13
+ ```bash
6
14
  ruby bin/crowdfund
15
+ ```
16
+
17
+ ## Como funciona
18
+
19
+ - Você carrega projetos via CSV (nome, fundos_iniciais, meta).
20
+ - Em cada rodada, um dado é rolado para **adicionar** (+25) ou **remover** (–15) fundos do projeto.
21
+ - Em paralelo, o projeto recebe **pledges** aleatórios: bronze ($50), silver ($75), gold ($100).
22
+ - Projetos podem ter comportamento especial:
23
+ - **MatchingProject**: quando chega a 50% da meta, cada `add_fund` passa a dobrar (+50).
24
+ - **GrantProject**: nunca perde fundos em `remove_fund`.
25
+ - Ao sair, o relatório salva os **subfinanciados** em `needmoremoney.txt` e imprime estatísticas.
26
+
27
+ ## Uso (CLI)
28
+
29
+ ```bash
30
+ # (1) CSV padrão (bin/projects.csv)
31
+ ruby bin/crowdfund
32
+
33
+ # (2) Informando um CSV customizado
34
+ ruby bin/crowdfund caminho/para/projetos.csv
35
+ ```
36
+
37
+ Durante a execução:
38
+ - Digite um número para a quantidade de rodadas.
39
+ - Digite `q` ou `e` para sair e ver o relatório final.
40
+
41
+ ### Formato do CSV
42
+
43
+ ```
44
+ NomeDoProjeto,fundos_iniciais,meta
45
+ BuyaBoat,5,10000
46
+ TraveltoVictoriaIsland,5,3000
47
+ GetaPuppy,5,300
48
+ ```
49
+
50
+ ## Saída esperada
51
+
52
+ - Resumo por rodada dos fundos e pledges recebidos.
53
+ - Arquivo `needmoremoney.txt` contendo:
54
+ - Título do relatório.
55
+ - Projetos totalmente financiados.
56
+ - Projetos subfinanciados ordenados por **quanto falta**.
57
+ - Snapshot CSV de todos os projetos.
58
+
59
+ ## API (uso como biblioteca)
60
+
61
+ Requerendo as classes principais:
62
+
63
+ ```ruby
64
+ require 'crowdfund/project'
65
+ require 'crowdfund/fund_request'
66
+ ```
67
+
68
+ Criando projetos e executando rodadas:
69
+
70
+ ```ruby
71
+ project = Project.new("My App", 500, 2000)
72
+ funding = FundRequest.new("Startup do Alec")
73
+ funding.add_project(project)
74
+ funding.request_funding(5)
75
+ funding.print_results
76
+ ```
77
+
78
+ ### Classes principais
79
+
80
+ - `Project`
81
+ - Atributos: `name`, `fund_amount`, `target_fund_amount`
82
+ - Métodos: `add_fund`, `remove_fund`, `funds_needed`, `funded?`, `received_pledge`, `pledges`, `total_funds`, `each_received_pledge`, `to_csv`, `status`
83
+ - `FundRequest`
84
+ - Gerencia lista de projetos, executa rodadas, imprime e salva relatórios.
85
+ - `MatchingProject < Project`
86
+ - Dobra `add_fund` quando `halfway_funded?` (>= 50% da meta).
87
+ - `GrantProject < Project`
88
+ - Sobrescreve `remove_fund` para nunca diminuir fundos.
89
+ - `Pledgesmod`
90
+ - Constante `PLEDGES` e `.random` para escolher bronze/silver/gold.
91
+ - `FundingRound`
92
+ - Regras de uma rodada: rola `Die`, aplica `add/remove`, atribui pledge.
93
+ - `Fundable` (mixin)
94
+ - Implementa `add_fund`, `remove_fund`, `funds_needed`, `funded?`.
95
+ - `Die`
96
+ - D6 simples com `roll`.
97
+
98
+ ## Testes
99
+
100
+ Rodar todos os testes:
101
+
102
+ ```bash
103
+ rspec
104
+ ```
105
+
106
+ Principais cenários cobertos:
107
+ - Regras de `add_fund`/`remove_fund`.
108
+ - Comportamento de `MatchingProject` e `GrantProject`.
109
+ - Integração de `FundingRound` e `Pledgesmod`.
110
+ - Geração do relatório em `FundRequest`.
111
+
112
+ ## Licença
7
113
 
8
- ## Features
9
- - Load players from CSV
10
- - Points system (blam/w00t)
11
- - Treasure trove
12
- - Clumsy and beserker player
114
+ MIT — consulte o arquivo `LICENSE`.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crowdfund_alec
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - LucioAlec
@@ -24,18 +24,120 @@ dependencies:
24
24
  - !ruby/object:Gem::Version
25
25
  version: '3'
26
26
  description: |-
27
- # Flicks
27
+ # Crowdfund (Alec)
28
28
 
29
- Command-line app/gem to fundfraising program.
29
+ Ferramenta de linha de comando e biblioteca Ruby para simular um programa de **arrecadação de fundos** com rodadas, promessas (pledges) e diferentes tipos de projetos (básico, com *matching*, e *grant*).
30
30
 
31
- ## Run from source
31
+ ## Instalação
32
+
33
+ ```bash
34
+ gem install crowdfund_alec
35
+ ```
36
+
37
+ Ou rode a partir do código-fonte:
38
+
39
+ ```bash
32
40
  ruby bin/crowdfund
41
+ ```
42
+
43
+ ## Como funciona
44
+
45
+ - Você carrega projetos via CSV (nome, fundos_iniciais, meta).
46
+ - Em cada rodada, um dado é rolado para **adicionar** (+25) ou **remover** (–15) fundos do projeto.
47
+ - Em paralelo, o projeto recebe **pledges** aleatórios: bronze ($50), silver ($75), gold ($100).
48
+ - Projetos podem ter comportamento especial:
49
+ - **MatchingProject**: quando chega a 50% da meta, cada `add_fund` passa a dobrar (+50).
50
+ - **GrantProject**: nunca perde fundos em `remove_fund`.
51
+ - Ao sair, o relatório salva os **subfinanciados** em `needmoremoney.txt` e imprime estatísticas.
52
+
53
+ ## Uso (CLI)
54
+
55
+ ```bash
56
+ # (1) CSV padrão (bin/projects.csv)
57
+ ruby bin/crowdfund
58
+
59
+ # (2) Informando um CSV customizado
60
+ ruby bin/crowdfund caminho/para/projetos.csv
61
+ ```
62
+
63
+ Durante a execução:
64
+ - Digite um número para a quantidade de rodadas.
65
+ - Digite `q` ou `e` para sair e ver o relatório final.
66
+
67
+ ### Formato do CSV
68
+
69
+ ```
70
+ NomeDoProjeto,fundos_iniciais,meta
71
+ BuyaBoat,5,10000
72
+ TraveltoVictoriaIsland,5,3000
73
+ GetaPuppy,5,300
74
+ ```
75
+
76
+ ## Saída esperada
77
+
78
+ - Resumo por rodada dos fundos e pledges recebidos.
79
+ - Arquivo `needmoremoney.txt` contendo:
80
+ - Título do relatório.
81
+ - Projetos totalmente financiados.
82
+ - Projetos subfinanciados ordenados por **quanto falta**.
83
+ - Snapshot CSV de todos os projetos.
84
+
85
+ ## API (uso como biblioteca)
86
+
87
+ Requerendo as classes principais:
88
+
89
+ ```ruby
90
+ require 'crowdfund/project'
91
+ require 'crowdfund/fund_request'
92
+ ```
93
+
94
+ Criando projetos e executando rodadas:
95
+
96
+ ```ruby
97
+ project = Project.new("My App", 500, 2000)
98
+ funding = FundRequest.new("Startup do Alec")
99
+ funding.add_project(project)
100
+ funding.request_funding(5)
101
+ funding.print_results
102
+ ```
103
+
104
+ ### Classes principais
105
+
106
+ - `Project`
107
+ - Atributos: `name`, `fund_amount`, `target_fund_amount`
108
+ - Métodos: `add_fund`, `remove_fund`, `funds_needed`, `funded?`, `received_pledge`, `pledges`, `total_funds`, `each_received_pledge`, `to_csv`, `status`
109
+ - `FundRequest`
110
+ - Gerencia lista de projetos, executa rodadas, imprime e salva relatórios.
111
+ - `MatchingProject < Project`
112
+ - Dobra `add_fund` quando `halfway_funded?` (>= 50% da meta).
113
+ - `GrantProject < Project`
114
+ - Sobrescreve `remove_fund` para nunca diminuir fundos.
115
+ - `Pledgesmod`
116
+ - Constante `PLEDGES` e `.random` para escolher bronze/silver/gold.
117
+ - `FundingRound`
118
+ - Regras de uma rodada: rola `Die`, aplica `add/remove`, atribui pledge.
119
+ - `Fundable` (mixin)
120
+ - Implementa `add_fund`, `remove_fund`, `funds_needed`, `funded?`.
121
+ - `Die`
122
+ - D6 simples com `roll`.
123
+
124
+ ## Testes
125
+
126
+ Rodar todos os testes:
127
+
128
+ ```bash
129
+ rspec
130
+ ```
131
+
132
+ Principais cenários cobertos:
133
+ - Regras de `add_fund`/`remove_fund`.
134
+ - Comportamento de `MatchingProject` e `GrantProject`.
135
+ - Integração de `FundingRound` e `Pledgesmod`.
136
+ - Geração do relatório em `FundRequest`.
137
+
138
+ ## Licença
33
139
 
34
- ## Features
35
- - Load players from CSV
36
- - Points system (blam/w00t)
37
- - Treasure trove
38
- - Clumsy and beserker player
140
+ MIT — consulte o arquivo `LICENSE`.
39
141
  email: lucioalec@gmail.com
40
142
  executables:
41
143
  - crowdfund