Dark mode em upload pdf
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<application
|
||||
android:label="teachit"
|
||||
android:label="Learn It"
|
||||
android:name="${applicationName}"
|
||||
android:icon="@mipmap/launcher_icon">
|
||||
<activity
|
||||
|
||||
@@ -13,7 +13,7 @@ This document outlines the complete Flutter project structure for the AI Study A
|
||||
## 📁 ROOT DIRECTORY STRUCTURE
|
||||
|
||||
```
|
||||
teachit/
|
||||
learn_it/
|
||||
├── android/ # Android-specific files
|
||||
├── ios/ # iOS-specific files
|
||||
├── web/ # Web-specific files
|
||||
@@ -381,7 +381,7 @@ lib/
|
||||
|
||||
### pubspec.yaml
|
||||
```yaml
|
||||
name: teachit
|
||||
name: learn_it
|
||||
description: AI Study Assistant - Educational Intelligence Platform
|
||||
version: 1.0.0+1
|
||||
|
||||
@@ -551,7 +551,7 @@ linter:
|
||||
**android/app/build.gradle**
|
||||
```gradle
|
||||
android {
|
||||
namespace 'com.example.teachit'
|
||||
namespace 'com.example.learnit'
|
||||
compileSdkVersion flutter.compileSdkVersion
|
||||
|
||||
compileOptions {
|
||||
@@ -564,7 +564,7 @@ android {
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
applicationId "com.example.teachit"
|
||||
applicationId "com.example.learnit"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion flutter.targetSdkVersion
|
||||
versionCode flutterVersionCode.toInteger()
|
||||
@@ -596,9 +596,9 @@ dependencies {
|
||||
**ios/Runner/Info.plist**
|
||||
```xml
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>TeachIt</string>
|
||||
<string>Learn It</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.example.teachit</string>
|
||||
<string>com.example.learnit</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
@@ -1063,7 +1063,7 @@ class Environment {
|
||||
static const bool isProductionMode = kReleaseMode;
|
||||
static const String apiBaseUrl = isDebugMode
|
||||
? 'http://localhost:8080'
|
||||
: 'https://api.teachit.app';
|
||||
: 'https://api.learnit.app';
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
**Dependencies**: None
|
||||
|
||||
#### Subtasks:
|
||||
- [ ] Create new Flutter project: `flutter create teachit`
|
||||
- [ ] Create new Flutter project: `flutter create learn_it`
|
||||
- [ ] Configure Flutter SDK version (3.41.9 or latest stable)
|
||||
- [ ] Set up version control (Git repository)
|
||||
- [ ] Create initial project structure
|
||||
@@ -62,8 +62,8 @@ dev_dependencies:
|
||||
#### Implementation Details:
|
||||
```bash
|
||||
# Create project
|
||||
flutter create teachit
|
||||
cd teachit
|
||||
flutter create learn_it
|
||||
cd learn_it
|
||||
|
||||
# Initialize git
|
||||
git init
|
||||
|
||||
@@ -275,7 +275,7 @@ export class FieldEncryption {
|
||||
|
||||
async decryptField(encryptedData: EncryptedData, key: string): Promise<string> {
|
||||
const decipher = crypto.createDecipher(this.algorithm, key);
|
||||
decipher.setAAD(Buffer.from('teachit-field', 'utf8'));
|
||||
decipher.setAAD(Buffer.from('learnit-field', 'utf8'));
|
||||
decipher.setAuthTag(Buffer.from(encryptedData.tag, 'hex'));
|
||||
|
||||
let decrypted = decipher.update(encryptedData.data, 'hex', 'utf8');
|
||||
@@ -409,7 +409,7 @@ export const securityHeaders = {
|
||||
"style-src 'self' 'unsafe-inline'",
|
||||
"img-src 'self' data: https:",
|
||||
"font-src 'self'",
|
||||
"connect-src 'self' https://api.teachit.app",
|
||||
"connect-src 'self' https://api.learnit.app",
|
||||
"frame-ancestors 'none'",
|
||||
"base-uri 'self'",
|
||||
"form-action 'self'",
|
||||
@@ -1218,7 +1218,7 @@ export class GDPRRights {
|
||||
return {
|
||||
format: 'JSON',
|
||||
data: userData,
|
||||
schema: 'teachit-data-schema-v1.0',
|
||||
schema: 'learnit-data-schema-v1.0',
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1433,30 +1433,30 @@ export class SecurityDashboard {
|
||||
### Security Team
|
||||
|
||||
#### Incident Response Team
|
||||
- **Security Lead**: security@teachit.app
|
||||
- **Incident Response**: incidents@teachit.app
|
||||
- **Vulnerability Reports**: vulnerabilities@teachit.app
|
||||
- **Compliance Officer**: compliance@teachit.app
|
||||
- **Security Lead**: security@learnit.app
|
||||
- **Incident Response**: incidents@learnit.app
|
||||
- **Vulnerability Reports**: vulnerabilities@learnit.app
|
||||
- **Compliance Officer**: compliance@learnit.app
|
||||
|
||||
#### Emergency Contacts
|
||||
- **Critical Incidents**: +1-800-SECURITY
|
||||
- **Data Breach**: +1-800-BREACH
|
||||
- **Legal Counsel**: legal@teachit.app
|
||||
- **Law Enforcement**: emergency@teachit.app
|
||||
- **Legal Counsel**: legal@learnit.app
|
||||
- **Law Enforcement**: emergency@learnit.app
|
||||
|
||||
### Reporting Security Issues
|
||||
|
||||
#### Vulnerability Disclosure
|
||||
- **Email**: security@teachit.app
|
||||
- **Email**: security@learnit.app
|
||||
- **PGP Key**: Available on request
|
||||
- **Response Time**: Within 24 hours
|
||||
- **Bounty Program**: Available for qualifying reports
|
||||
|
||||
#### Data Subject Requests
|
||||
- **Access Requests**: privacy@teachit.app
|
||||
- **Deletion Requests**: delete@teachit.app
|
||||
- **Correction Requests**: corrections@teachit.app
|
||||
- **Complaints**: complaints@teachit.app
|
||||
- **Access Requests**: privacy@learnit.app
|
||||
- **Deletion Requests**: delete@learnit.app
|
||||
- **Correction Requests**: corrections@learnit.app
|
||||
- **Complaints**: complaints@learnit.app
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -109,9 +109,9 @@ import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:mockito/mockito.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
|
||||
import 'package:teachit/features/auth/domain/entities/user.dart';
|
||||
import 'package:teachit/features/auth/domain/repositories/auth_repository.dart';
|
||||
import 'package:teachit/features/auth/domain/usecases/sign_in.dart';
|
||||
import 'package:learn_it/features/auth/domain/entities/user.dart';
|
||||
import 'package:learn_it/features/auth/domain/repositories/auth_repository.dart';
|
||||
import 'package:learn_it/features/auth/domain/usecases/sign_in.dart';
|
||||
|
||||
class MockAuthRepository extends Mock implements AuthRepository {}
|
||||
|
||||
@@ -353,7 +353,7 @@ import 'package:mockito/mockito.dart';
|
||||
import 'package:mockito/annotations.dart';
|
||||
|
||||
import 'package:teachit/features/auth/presentation/screens/login_screen.dart';
|
||||
import 'package:teachit/features/auth/presentation/providers/auth_provider.dart';
|
||||
import 'package:learn_it/features/auth/presentation/providers/auth_provider.dart';
|
||||
|
||||
import 'login_screen_test.mocks.dart';
|
||||
|
||||
@@ -516,9 +516,9 @@ import 'package:firebase_core/firebase_core.dart';
|
||||
import 'package:cloud_firestore/cloud_firestore.dart';
|
||||
import 'package:firebase_auth/firebase_auth.dart';
|
||||
|
||||
import 'package:teachit/main.dart' as app;
|
||||
import 'package:learn_it/main.dart' as app;
|
||||
import 'package:teachit/features/auth/presentation/screens/login_screen.dart';
|
||||
import 'package:teachit/features/student/presentation/screens/student_dashboard_screen.dart';
|
||||
import 'package:learn_it/features/student/presentation/screens/student_dashboard_screen.dart';
|
||||
|
||||
void main() {
|
||||
group('Authentication Flow Integration Tests', () {
|
||||
@@ -767,7 +767,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:integration_test/integration_test.dart';
|
||||
|
||||
import 'package:teachit/main.dart' as app;
|
||||
import 'package:learn_it/main.dart' as app;
|
||||
|
||||
void main() {
|
||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
@@ -17,7 +17,7 @@ Welcome to the AI Study Assistant! This comprehensive guide will help you master
|
||||
#### 1. Download and Install
|
||||
- **Android**: Download from Google Play Store
|
||||
- **iOS**: Download from App Store
|
||||
- **Web**: Visit [app.teachit.app](https://app.teachit.app)
|
||||
- **Web**: Visit [app.learnit.app](https://app.learnit.app)
|
||||
|
||||
#### 2. Create Account
|
||||
1. Open the app
|
||||
@@ -475,8 +475,8 @@ Monitor class performance with:
|
||||
- **Tutoring Services**: Additional support
|
||||
|
||||
#### Technical Support
|
||||
- **Email**: support@teachit.app
|
||||
- **Phone**: 1-800-TEACH-IT
|
||||
- **Email**: support@learnit.app
|
||||
- **Phone**: 1-800-LEARN-IT
|
||||
- **Live Chat**: In-app chat support
|
||||
- **Community Forum**: User discussions
|
||||
|
||||
@@ -565,10 +565,10 @@ Monitor class performance with:
|
||||
### Contact Information
|
||||
|
||||
#### Support Channels
|
||||
- **Email Support**: support@teachit.app
|
||||
- **Phone Support**: 1-800-TEACH-IT
|
||||
- **Email Support**: support@learnit.app
|
||||
- **Phone Support**: 1-800-LEARN-IT
|
||||
- **Live Chat**: In-app support
|
||||
- **Social Media**: @TeachItApp
|
||||
- **Social Media**: @LearnItApp
|
||||
|
||||
#### School Support
|
||||
- **IT Department**: Technical assistance
|
||||
@@ -602,10 +602,10 @@ Monitor class performance with:
|
||||
- **Esc**: Cancel/close
|
||||
|
||||
### Emergency Contacts
|
||||
- **Technical Issues**: support@teachit.app
|
||||
- **Account Problems**: admin@teachit.app
|
||||
- **Security Concerns**: security@teachit.app
|
||||
- **Emergency**: 1-800-TEACH-IT
|
||||
- **Technical Issues**: support@learnit.app
|
||||
- **Account Problems**: admin@learnit.app
|
||||
- **Security Concerns**: security@learnit.app
|
||||
- **Emergency**: 1-800-LEARN-IT
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>Teachit</string>
|
||||
<string>Learn It</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
@@ -15,7 +15,7 @@
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>teachit</string>
|
||||
<string>learnit</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
|
||||
@@ -47,11 +47,9 @@ class _TeacherMaterialsPageState extends State<TeacherMaterialsPage> {
|
||||
appBar: AppBar(
|
||||
title: const Text(
|
||||
'Materiais da Disciplina',
|
||||
style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold),
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
),
|
||||
backgroundColor: const Color(0xFF82C9BD),
|
||||
elevation: 0,
|
||||
iconTheme: const IconThemeData(color: Colors.white),
|
||||
),
|
||||
floatingActionButton: _isUploading
|
||||
? FloatingActionButton.extended(
|
||||
@@ -81,12 +79,17 @@ class _TeacherMaterialsPageState extends State<TeacherMaterialsPage> {
|
||||
),
|
||||
|
||||
body: Container(
|
||||
decoration: const BoxDecoration(
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [Color(0xFF82C9BD), Color(0xFFF8F9FA)],
|
||||
stops: [0.0, 0.4],
|
||||
colors: Theme.of(context).brightness == Brightness.dark
|
||||
? [
|
||||
Theme.of(context).colorScheme.primary.withOpacity(0.3),
|
||||
Theme.of(context).colorScheme.background,
|
||||
]
|
||||
: [const Color(0xFF82C9BD), const Color(0xFFF8F9FA)],
|
||||
stops: const [0.0, 0.4],
|
||||
),
|
||||
),
|
||||
child: SafeArea(
|
||||
@@ -196,13 +199,14 @@ class _TeacherMaterialsPageState extends State<TeacherMaterialsPage> {
|
||||
}
|
||||
|
||||
void _showUploadOptions() {
|
||||
final cs = Theme.of(context).colorScheme;
|
||||
showModalBottomSheet(
|
||||
context: context,
|
||||
backgroundColor: Colors.transparent,
|
||||
builder: (context) => Container(
|
||||
decoration: const BoxDecoration(
|
||||
color: Colors.white,
|
||||
borderRadius: BorderRadius.vertical(top: Radius.circular(20)),
|
||||
decoration: BoxDecoration(
|
||||
color: cs.surface,
|
||||
borderRadius: const BorderRadius.vertical(top: Radius.circular(20)),
|
||||
),
|
||||
child: SafeArea(
|
||||
child: Padding(
|
||||
@@ -216,7 +220,7 @@ class _TeacherMaterialsPageState extends State<TeacherMaterialsPage> {
|
||||
width: 40,
|
||||
height: 4,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.grey[300],
|
||||
color: cs.onSurface.withOpacity(0.2),
|
||||
borderRadius: BorderRadius.circular(2),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -154,7 +154,7 @@ class HelpPage extends StatelessWidget {
|
||||
context: context,
|
||||
question: 'Como contactar o suporte?',
|
||||
answer:
|
||||
'Pode contactar-nos através do email suporte@teachit.com.',
|
||||
'Pode contactar-nos através do email suporte@learnit.com.',
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -4,10 +4,10 @@ project(runner LANGUAGES CXX)
|
||||
|
||||
# The name of the executable created for the application. Change this to change
|
||||
# the on-disk name of your application.
|
||||
set(BINARY_NAME "teachit")
|
||||
set(BINARY_NAME "learnit")
|
||||
# The unique GTK application identifier for this application. See:
|
||||
# https://wiki.gnome.org/HowDoI/ChooseApplicationID
|
||||
set(APPLICATION_ID "com.example.teachit")
|
||||
set(APPLICATION_ID "com.example.learnit")
|
||||
|
||||
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
|
||||
# versions of CMake.
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
// 'flutter create' template.
|
||||
|
||||
// The application's name. By default this is also the title of the Flutter window.
|
||||
PRODUCT_NAME = teachit
|
||||
PRODUCT_NAME = Learn It
|
||||
|
||||
// The application's bundle identifier
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.teachit
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.learnit
|
||||
|
||||
// The copyright displayed in application information
|
||||
PRODUCT_COPYRIGHT = Copyright © 2026 com.example. All rights reserved.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
name: teachit
|
||||
name: learn_it
|
||||
description: "AI Study Assistant - Educational Intelligence Platform"
|
||||
# The following line prevents the package from being accidentally published to
|
||||
# pub.dev using `flutter pub publish`. This is preferred for private packages.
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
import 'package:teachit/main.dart';
|
||||
import 'package:learn_it/main.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
||||
|
||||
@@ -23,13 +23,13 @@
|
||||
<!-- iOS meta tags & icons -->
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
||||
<meta name="apple-mobile-web-app-title" content="teachit">
|
||||
<meta name="apple-mobile-web-app-title" content="Learn It">
|
||||
<link rel="apple-touch-icon" href="icons/Icon-192.png">
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" type="image/png" href="favicon.png"/>
|
||||
|
||||
<title>teachit</title>
|
||||
<title>Learn It</title>
|
||||
<link rel="manifest" href="manifest.json">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "teachit",
|
||||
"short_name": "teachit",
|
||||
"name": "Learn It",
|
||||
"short_name": "Learn It",
|
||||
"start_url": ".",
|
||||
"display": "standalone",
|
||||
"background_color": "#0175C2",
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# Project-level configuration.
|
||||
cmake_minimum_required(VERSION 3.14)
|
||||
project(teachit LANGUAGES CXX)
|
||||
project(learnit LANGUAGES CXX)
|
||||
|
||||
# The name of the executable created for the application. Change this to change
|
||||
# the on-disk name of your application.
|
||||
set(BINARY_NAME "teachit")
|
||||
set(BINARY_NAME "learnit")
|
||||
|
||||
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
|
||||
# versions of CMake.
|
||||
|
||||
@@ -90,12 +90,12 @@ BEGIN
|
||||
BLOCK "040904e4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "com.example" "\0"
|
||||
VALUE "FileDescription", "teachit" "\0"
|
||||
VALUE "FileDescription", "Learn It" "\0"
|
||||
VALUE "FileVersion", VERSION_AS_STRING "\0"
|
||||
VALUE "InternalName", "teachit" "\0"
|
||||
VALUE "InternalName", "learnit" "\0"
|
||||
VALUE "LegalCopyright", "Copyright (C) 2026 com.example. All rights reserved." "\0"
|
||||
VALUE "OriginalFilename", "teachit.exe" "\0"
|
||||
VALUE "ProductName", "teachit" "\0"
|
||||
VALUE "OriginalFilename", "learnit.exe" "\0"
|
||||
VALUE "ProductName", "Learn It" "\0"
|
||||
VALUE "ProductVersion", VERSION_AS_STRING "\0"
|
||||
END
|
||||
END
|
||||
|
||||
@@ -27,7 +27,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
|
||||
FlutterWindow window(project);
|
||||
Win32Window::Point origin(10, 10);
|
||||
Win32Window::Size size(1280, 720);
|
||||
if (!window.Create(L"teachit", origin, size)) {
|
||||
if (!window.Create(L"Learn It", origin, size)) {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
window.SetQuitOnClose(true);
|
||||
|
||||
Reference in New Issue
Block a user