diff --git a/app/src/main/java/com/example/vdcscore/MainActivity.java b/app/src/main/java/com/example/vdcscore/MainActivity.java index a39d15d..fb2a782 100644 --- a/app/src/main/java/com/example/vdcscore/MainActivity.java +++ b/app/src/main/java/com/example/vdcscore/MainActivity.java @@ -69,7 +69,7 @@ public class MainActivity extends AppCompatActivity { // Passing each menu ID as a set of Ids because each // menu should be considered as top level destinations. mAppBarConfiguration = new AppBarConfiguration.Builder( - R.id.nav_home, R.id.nav_gallery, R.id.nav_definicoes, + R.id.nav_home, R.id.nav_gallery, R.id.nav_cup, R.id.nav_definicoes, R.id.nav_live_games, R.id.nav_clubs, R.id.nav_top_scorers, R.id.nav_news) .setOpenableLayout(drawer) .build(); diff --git a/app/src/main/java/com/example/vdcscore/ui/cup/CupFragment.java b/app/src/main/java/com/example/vdcscore/ui/cup/CupFragment.java new file mode 100644 index 0000000..9bd7f0d --- /dev/null +++ b/app/src/main/java/com/example/vdcscore/ui/cup/CupFragment.java @@ -0,0 +1,164 @@ +package com.example.vdcscore.ui.cup; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.example.vdcscore.R; +import com.example.vdcscore.databinding.FragmentCupBinding; +import com.example.vdcscore.ui.gallery.Match; +import com.example.vdcscore.ui.gallery.Matchday; +import com.example.vdcscore.ui.gallery.MatchesAdapter; +import com.google.firebase.database.DataSnapshot; +import com.google.firebase.database.DatabaseError; +import com.google.firebase.database.DatabaseReference; +import com.google.firebase.database.FirebaseDatabase; +import com.google.firebase.database.ValueEventListener; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class CupFragment extends Fragment { + + private FragmentCupBinding binding; + private MatchesAdapter adapter; + private DatabaseReference mDatabase; + private List phasesList = new ArrayList<>(); // Reusing Matchday as generalized 'Phase' + private int currentPhaseIndex = 0; + private String currentCategory = "seniores"; + private ValueEventListener currentListener; + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + + binding = FragmentCupBinding.inflate(inflater, container, false); + View root = binding.getRoot(); + + // Initialize RecyclerView with reused MatchesAdapter + adapter = new MatchesAdapter(); + binding.recyclerPhases.setLayoutManager(new LinearLayoutManager(getContext())); + binding.recyclerPhases.setAdapter(adapter); + + // Setup Toggle Group + binding.toggleGroupCategory.addOnButtonCheckedListener((group, checkedId, isChecked) -> { + if (isChecked) { + if (checkedId == R.id.btn_seniores) { + currentCategory = "seniores"; + } else if (checkedId == R.id.btn_juniores) { + currentCategory = "juniores"; + } + fetchPhases(); + } + }); + + // Setup Navigation Buttons + binding.btnPrevPhase.setOnClickListener(v -> { + if (currentPhaseIndex > 0) { + currentPhaseIndex--; + updateUI(); + } + }); + + binding.btnNextPhase.setOnClickListener(v -> { + if (currentPhaseIndex < phasesList.size() - 1) { + currentPhaseIndex++; + updateUI(); + } + }); + + // Initial Fetch + fetchPhases(); + + return root; + } + + private void fetchPhases() { + if (mDatabase != null && currentListener != null) { + mDatabase.removeEventListener(currentListener); + } + + binding.textPhaseName.setText("Carregando..."); + mDatabase = FirebaseDatabase.getInstance().getReference("taça").child(currentCategory); + + currentListener = new ValueEventListener() { + @Override + public void onDataChange(@NonNull DataSnapshot snapshot) { + if (binding == null) return; + + phasesList.clear(); + for (DataSnapshot phaseSnap : snapshot.getChildren()) { + String name = phaseSnap.getKey(); + List matches = new ArrayList<>(); + + for (DataSnapshot matchSnap : phaseSnap.getChildren()) { + Match match = matchSnap.getValue(Match.class); + if (match != null) { + match.setId(matchSnap.getKey()); + matches.add(match); + } + } + + if (!matches.isEmpty()) { + phasesList.add(new Matchday(name, matches)); + } + } + + // Sort alphabetically/chronologically as they are phrases like "1ª Fase", "Oitavos", etc. + Collections.sort(phasesList, (p1, p2) -> p1.getName().compareTo(p2.getName())); + + if (phasesList.isEmpty()) { + binding.textPhaseName.setText("Sem fases"); + adapter.setMatches(new ArrayList<>()); + } else { + if (currentPhaseIndex >= phasesList.size()) { + currentPhaseIndex = phasesList.size() - 1; + } + // In case initial load or filter swap, bound index. + if (currentPhaseIndex < 0) currentPhaseIndex = 0; + updateUI(); + } + } + + @Override + public void onCancelled(@NonNull DatabaseError error) { + if (getContext() != null) { + Toast.makeText(getContext(), "Erro ao carregar taça: " + error.getMessage(), Toast.LENGTH_SHORT).show(); + } + } + }; + + mDatabase.addValueEventListener(currentListener); + } + + private void updateUI() { + if (phasesList.isEmpty()) return; + + Matchday currentPhase = phasesList.get(currentPhaseIndex); + binding.textPhaseName.setText(currentPhase.getName()); + adapter.setMatches(currentPhase.getMatches()); + + // Enable/Disable navigation buttons + binding.btnPrevPhase.setEnabled(currentPhaseIndex > 0); + binding.btnNextPhase.setEnabled(currentPhaseIndex < phasesList.size() - 1); + + // Visual feedback + binding.btnPrevPhase.setAlpha(currentPhaseIndex > 0 ? 1.0f : 0.3f); + binding.btnNextPhase.setAlpha(currentPhaseIndex < phasesList.size() - 1 ? 1.0f : 0.3f); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (mDatabase != null && currentListener != null) { + mDatabase.removeEventListener(currentListener); + } + binding = null; + } +} diff --git a/app/src/main/java/com/example/vdcscore/ui/gallery/Match.java b/app/src/main/java/com/example/vdcscore/ui/gallery/Match.java index a3db68a..20bb572 100644 --- a/app/src/main/java/com/example/vdcscore/ui/gallery/Match.java +++ b/app/src/main/java/com/example/vdcscore/ui/gallery/Match.java @@ -6,8 +6,8 @@ public class Match { private String id; private String homeName; private String awayName; - private Integer homeScore; - private Integer awayScore; + private Object homeScore; + private Object awayScore; private String date; private String time; private String homeLogo; @@ -87,22 +87,22 @@ public class Match { } @PropertyName("home_golos") - public Integer getHomeScore() { + public Object getHomeScore() { return homeScore; } @PropertyName("home_golos") - public void setHomeScore(Integer homeScore) { + public void setHomeScore(Object homeScore) { this.homeScore = homeScore; } @PropertyName("away_golos") - public Integer getAwayScore() { + public Object getAwayScore() { return awayScore; } @PropertyName("away_golos") - public void setAwayScore(Integer awayScore) { + public void setAwayScore(Object awayScore) { this.awayScore = awayScore; } diff --git a/app/src/main/res/color/nav_item_bg.xml b/app/src/main/res/color/nav_item_bg.xml new file mode 100644 index 0000000..eb9385a --- /dev/null +++ b/app/src/main/res/color/nav_item_bg.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/color/nav_item_tint.xml b/app/src/main/res/color/nav_item_tint.xml new file mode 100644 index 0000000..2b3a092 --- /dev/null +++ b/app/src/main/res/color/nav_item_tint.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/color/toggle_bg_color.xml b/app/src/main/res/color/toggle_bg_color.xml new file mode 100644 index 0000000..a7f55c6 --- /dev/null +++ b/app/src/main/res/color/toggle_bg_color.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/color/toggle_text_color.xml b/app/src/main/res/color/toggle_text_color.xml new file mode 100644 index 0000000..0bae00a --- /dev/null +++ b/app/src/main/res/color/toggle_text_color.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/drawable-night/bg_nav_header_wave.xml b/app/src/main/res/drawable-night/bg_nav_header_wave.xml new file mode 100644 index 0000000..49c2f46 --- /dev/null +++ b/app/src/main/res/drawable-night/bg_nav_header_wave.xml @@ -0,0 +1,5 @@ + + + + diff --git a/app/src/main/res/drawable/bg_nav_header_wave.xml b/app/src/main/res/drawable/bg_nav_header_wave.xml new file mode 100644 index 0000000..d5bdbcf --- /dev/null +++ b/app/src/main/res/drawable/bg_nav_header_wave.xml @@ -0,0 +1,14 @@ + + + + + + diff --git a/app/src/main/res/drawable/brand_icon_bg.xml b/app/src/main/res/drawable/brand_icon_bg.xml new file mode 100644 index 0000000..e89ab51 --- /dev/null +++ b/app/src/main/res/drawable/brand_icon_bg.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ic_cup.xml b/app/src/main/res/drawable/ic_cup.xml new file mode 100644 index 0000000..cf8a281 --- /dev/null +++ b/app/src/main/res/drawable/ic_cup.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_nav_classification.xml b/app/src/main/res/drawable/ic_nav_classification.xml new file mode 100644 index 0000000..2e20d26 --- /dev/null +++ b/app/src/main/res/drawable/ic_nav_classification.xml @@ -0,0 +1,21 @@ + + + + diff --git a/app/src/main/res/drawable/ic_nav_clubs.xml b/app/src/main/res/drawable/ic_nav_clubs.xml new file mode 100644 index 0000000..0866328 --- /dev/null +++ b/app/src/main/res/drawable/ic_nav_clubs.xml @@ -0,0 +1,14 @@ + + + diff --git a/app/src/main/res/drawable/ic_nav_jornadas.xml b/app/src/main/res/drawable/ic_nav_jornadas.xml new file mode 100644 index 0000000..370d2da --- /dev/null +++ b/app/src/main/res/drawable/ic_nav_jornadas.xml @@ -0,0 +1,42 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ic_nav_live.xml b/app/src/main/res/drawable/ic_nav_live.xml new file mode 100644 index 0000000..35e7041 --- /dev/null +++ b/app/src/main/res/drawable/ic_nav_live.xml @@ -0,0 +1,14 @@ + + + diff --git a/app/src/main/res/drawable/ic_nav_news.xml b/app/src/main/res/drawable/ic_nav_news.xml new file mode 100644 index 0000000..3d84bef --- /dev/null +++ b/app/src/main/res/drawable/ic_nav_news.xml @@ -0,0 +1,35 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_nav_scorers.xml b/app/src/main/res/drawable/ic_nav_scorers.xml new file mode 100644 index 0000000..257c211 --- /dev/null +++ b/app/src/main/res/drawable/ic_nav_scorers.xml @@ -0,0 +1,28 @@ + + + + + diff --git a/app/src/main/res/drawable/rank_1_badge.xml b/app/src/main/res/drawable/rank_1_badge.xml new file mode 100644 index 0000000..e659ba3 --- /dev/null +++ b/app/src/main/res/drawable/rank_1_badge.xml @@ -0,0 +1,8 @@ + + + + diff --git a/app/src/main/res/drawable/rank_2_badge.xml b/app/src/main/res/drawable/rank_2_badge.xml new file mode 100644 index 0000000..96f2378 --- /dev/null +++ b/app/src/main/res/drawable/rank_2_badge.xml @@ -0,0 +1,8 @@ + + + + diff --git a/app/src/main/res/drawable/rank_3_badge.xml b/app/src/main/res/drawable/rank_3_badge.xml new file mode 100644 index 0000000..0f7399d --- /dev/null +++ b/app/src/main/res/drawable/rank_3_badge.xml @@ -0,0 +1,8 @@ + + + + diff --git a/app/src/main/res/font/bebas_neue.ttf b/app/src/main/res/font/bebas_neue.ttf new file mode 100644 index 0000000..c328c6e Binary files /dev/null and b/app/src/main/res/font/bebas_neue.ttf differ diff --git a/app/src/main/res/font/font_bebas_neue.xml b/app/src/main/res/font/font_bebas_neue.xml new file mode 100644 index 0000000..f90dc0a --- /dev/null +++ b/app/src/main/res/font/font_bebas_neue.xml @@ -0,0 +1,7 @@ + + + + diff --git a/app/src/main/res/font/font_ibm_plex_mono.xml b/app/src/main/res/font/font_ibm_plex_mono.xml new file mode 100644 index 0000000..adf1252 --- /dev/null +++ b/app/src/main/res/font/font_ibm_plex_mono.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/app/src/main/res/font/font_ibm_plex_sans.xml b/app/src/main/res/font/font_ibm_plex_sans.xml new file mode 100644 index 0000000..9f24b2a --- /dev/null +++ b/app/src/main/res/font/font_ibm_plex_sans.xml @@ -0,0 +1,19 @@ + + + + + + + diff --git a/app/src/main/res/font/ibm_plex_mono.ttf b/app/src/main/res/font/ibm_plex_mono.ttf new file mode 100644 index 0000000..0c9770d Binary files /dev/null and b/app/src/main/res/font/ibm_plex_mono.ttf differ diff --git a/app/src/main/res/font/ibm_plex_mono_medium.ttf b/app/src/main/res/font/ibm_plex_mono_medium.ttf new file mode 100644 index 0000000..33c546f Binary files /dev/null and b/app/src/main/res/font/ibm_plex_mono_medium.ttf differ diff --git a/app/src/main/res/font/ibm_plex_sans.ttf b/app/src/main/res/font/ibm_plex_sans.ttf new file mode 100644 index 0000000..38bb3aa --- /dev/null +++ b/app/src/main/res/font/ibm_plex_sans.ttf @@ -0,0 +1,1483 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page not found · GitHub · GitHub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ Skip to content + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+ + + + + +
+ + + + + + + + + +
+
+ + + +
+
+ +
+
+ 404 “This is not the web page you are looking for” + + + + + + + + + + + + +
+
+ +
+
+ +
+ + +
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + diff --git a/app/src/main/res/font/ibm_plex_sans_bold.ttf b/app/src/main/res/font/ibm_plex_sans_bold.ttf new file mode 100644 index 0000000..f7ec600 --- /dev/null +++ b/app/src/main/res/font/ibm_plex_sans_bold.ttf @@ -0,0 +1,1483 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page not found · GitHub · GitHub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ Skip to content + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+ + + + + +
+ + + + + + + + + +
+
+ + + +
+
+ +
+
+ 404 “This is not the web page you are looking for” + + + + + + + + + + + + +
+
+ +
+
+ +
+ + +
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + diff --git a/app/src/main/res/font/ibm_plex_sans_medium.ttf b/app/src/main/res/font/ibm_plex_sans_medium.ttf new file mode 100644 index 0000000..575adcb --- /dev/null +++ b/app/src/main/res/font/ibm_plex_sans_medium.ttf @@ -0,0 +1,1483 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page not found · GitHub · GitHub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ Skip to content + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+ + + + + +
+ + + + + + + + + +
+
+ + + +
+
+ +
+
+ 404 “This is not the web page you are looking for” + + + + + + + + + + + + +
+
+ +
+
+ +
+ + +
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + diff --git a/app/src/main/res/font/ibm_plex_sans_semibold.ttf b/app/src/main/res/font/ibm_plex_sans_semibold.ttf new file mode 100644 index 0000000..1c27871 --- /dev/null +++ b/app/src/main/res/font/ibm_plex_sans_semibold.ttf @@ -0,0 +1,1483 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page not found · GitHub · GitHub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ Skip to content + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+ + + + + +
+ + + + + + + + + +
+
+ + + +
+
+ +
+
+ 404 “This is not the web page you are looking for” + + + + + + + + + + + + +
+
+ +
+
+ +
+ + +
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + diff --git a/app/src/main/res/layout/dialog_team_selector.xml b/app/src/main/res/layout/dialog_team_selector.xml new file mode 100644 index 0000000..548bb0d --- /dev/null +++ b/app/src/main/res/layout/dialog_team_selector.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_cup.xml b/app/src/main/res/layout/fragment_cup.xml new file mode 100644 index 0000000..71e5554 --- /dev/null +++ b/app/src/main/res/layout/fragment_cup.xml @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_comparison_selector.xml b/app/src/main/res/layout/item_comparison_selector.xml new file mode 100644 index 0000000..f79c555 --- /dev/null +++ b/app/src/main/res/layout/item_comparison_selector.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/activity_main_drawer.xml b/app/src/main/res/menu/activity_main_drawer.xml index 5d73747..be1ec20 100644 --- a/app/src/main/res/menu/activity_main_drawer.xml +++ b/app/src/main/res/menu/activity_main_drawer.xml @@ -16,6 +16,10 @@ android:id="@+id/nav_gallery" android:icon="@drawable/ic_nav_jornadas" android:title="@string/menu_gallery" /> + + \ No newline at end of file diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml new file mode 100644 index 0000000..487f305 --- /dev/null +++ b/app/src/main/res/values-night/colors.xml @@ -0,0 +1,49 @@ + + + #FF000000 + #FFFFFFFF + + + #0a0e1a + #111827 + #1a2235 + #243047 + + #22c55e + #1E22C55E + #4022C55E + + #3b82f6 + #ef4444 + #f59e0b + + #f9fafb + #9ca3af + #4b5563 + + #1e2d45 + #22c55e + + + #22c55e + #1a2235 + #0a0e1a + + #111827 + #1a2235 + #0a0e1a + + #22c55e + #22c55e + + #0a0e1a + #111827 + #111827 + + #f9fafb + #9ca3af + #0a0e1a + + #1e2d45 + #111827 + diff --git a/design-mockup/vdcscore_dark_android_mockup.html b/design-mockup/vdcscore_dark_android_mockup.html new file mode 100644 index 0000000..3960db3 --- /dev/null +++ b/design-mockup/vdcscore_dark_android_mockup.html @@ -0,0 +1,856 @@ + + + +
+
+
+
+ +
+
+ +
+
Dashboard
+
Jogos Live
+
Jornadas
+
Classificação
+
Clubes
+
Melhores Marcadores
+
+ +
+ +
+
+ +
DASHBOARD
+
+
+
+
+ LIVE +
+
+
+
+ + +
+
+
+
PAINEL DE CONTROLO
+
Bem-vindo ao VdcScore Live Score.
+
+
+
+
+
Clubes Ativos
+
8
+
+
+
+ +
+
Em Direto
+
2
+
+
+
+
Próximos Jogos
+
5
+
+
+
+
Jornada Atual
+
22
+
+
+
+
ATIVIDADE RECENTE
+
+
Classificação dos Juniores atualizada
+
2H
+
+
+
Bagunte F.C. atualizou o plantel
+
5H
+
+
+
Resultados da 22ª Jornada validados
+
1D
+
+
+
+
+
PRONTO PARA O DIRETO?
+
Inicia um acompanhamento em tempo real de qualquer jogo. A app recebe as notificações instantaneamente.
+
+ GERIR JORNADAS +
+
+
+
+
+ + +
+
+
+
+ JOGOS LIVE +
+
Jogos a decorrer neste momento.
+
+
+
+
Seniores · Jornada 22
+
DIRETO
+
+
+
+
+ 75' +
+
+
+
+
J.U. MOSTEIRÓ
+
+
+
2
+
:
+
1
+
+
+
🔴
+
SC ESPINHO
+
+
+
+ +
+
+
+
Juniores · Jornada 20
+
DIRETO
+
+
+
+
+ 38' +
+
+
+
+
FC GUILHABREU
+
+
+
0
+
:
+
0
+
+
+
🛡️
+
G.D.C. RIO MAU
+
+
+
+ +
+
+
+ + +
+
+
+
JORNADA 22 · SENIORES
+
+
+
+
+
+
08/05/2026 · 10:00
+
LIVE
+
+
+
+
+
+
J.U. MOSTEIRÓ
+
+
+
2
+
:
+
1
+
+
+
🔴
+
SC ESPINHO
+
+
+
+
75'
+
Campo Mosteiró
+
+
+ +
+
+
+
08/05/2026 · 15:00
+
TERMINADO
+
+
+
+
+
+
FC GUILHABREU
+
+
+
3
+
:
+
1
+
+
+
🔵
+
SC MATOSINHOS
+
+
+
+
15:00
+
Campo Guilhabreu
+
+
+ +
+
+
+
09/05/2026 · 11:00
+
AGENDADO
+
+
+
+
+
🟡
+
AD CANIDELO
+
+
+
+
:
+
+
+
+
🛡️
+
G.D.C. RIO MAU
+
+
+
+
11:00
+
AD Canidelo
+
+
+ +
+
+
+ + +
+
+
+
CLASSIFICAÇÃO
+
Tabela classificativa em tempo real.
+
+
+
SENIORES
+
JUNIORES
+
+
+
+
Pos
+ +
Clube
+
J
+
V
+
D
+
Pts
+
+
+
1
+
+
J.U. Mosteiró
+
22
+
16
+
3
+
52
+
+
+
2
+
🛡️
+
G.D.C. Rio Mau
+
22
+
13
+
5
+
44
+
+
+
3
+
+
FC Guilhabreu
+
22
+
12
+
6
+
41
+
+
+
4
+
🔵
+
SC Matosinhos
+
22
+
11
+
6
+
38
+
+
+
5
+
🟡
+
AD Canidelo
+
22
+
10
+
8
+
34
+
+
+
6
+
🔴
+
SC Espinho
+
22
+
9
+
9
+
31
+
+
+
+
+ + +
+
+
+
CLUBES
+
8 clubes na divisão
+
+ +
+
J.U. Mosteiró
Campo de Mosteiró
+
G.D.C. Rio Mau
Campo de Rio Mau
+
FC Guilhabreu
Campo de Guilhabreu
+
SC Matosinhos
Estádio Municipal
+
AD Canidelo
Campo da AD
+
SC Espinho
Estádio de Espinho
+
+
+
+ + +
+
+
+
MELHORES MARCADORES
+
Temporada 2025/26
+
+
+
SENIORES
+
JUNIORES
+
+
+
+
1
+
Marco Silva
J.U. Mosteiró
+
18
GOLOS
+
+
+
2
+
João Ferreira
FC Guilhabreu
+
14
GOLOS
+
+
+
3
+
Rui Costa
SC Matosinhos
+
12
GOLOS
+
+
+
4
+
Carlos Matos
G.D.C. Rio Mau
+
9
GOLOS
+
+
+
5
+
Pedro Nunes
AD Canidelo
+
8
GOLOS
+
+
+
+
+ + +
+
+
+
DEFINIÇÕES
+
+
+
CONTA
+
+
PerfilAdmin
+
Palavra-passe
+
+
+
+
SISTEMA
+
+
NotificaçõesAtivas
+
Estado OnlineOnline
+
SincronizaçãoFirebase
+
+
+
+
APLICAÇÃO
+
+
Versãov2.1.0
+
Terminar sessão
+
+
+
+
+ +
+
+
+ +